回答編集履歴
3
説明補足
test
CHANGED
@@ -62,4 +62,4 @@
|
|
62
62
|
|
63
63
|
本件には関係しませんが・・・
|
64
64
|
|
65
|
-
interface上のインスタンスメソッドはpublicにしかできません。いちいちpublicと指定しても間違いではないのですが、IDEによっては「そのpublic必要ないですよ?」と突っ込まれます。もちろん実装クラス側には明示的にpublicと書かねばなりません。
|
65
|
+
interface上の(実装がない)インスタンスメソッドはpublicにしかできません。いちいちpublicと指定しても間違いではないのですが、IDEによっては「そのpublic必要ないですよ?」と突っ込まれます。もちろん実装クラス側には明示的にpublicと書かねばなりません。
|
2
表現変更
test
CHANGED
@@ -54,7 +54,7 @@
|
|
54
54
|
|
55
55
|
|
56
56
|
|
57
|
-
と定義してしまうと、特定のenum型は他の全てのenum型と比較可能であるというような意味合い(不必要に型の範囲を拡張しすぎている)ことになります。`Comparable<E>`としてやれば、各enum型が「自分自身の型(=E)とのみ比較できるクラス」であることが自然に表現できるわけです。
|
57
|
+
と定義してしまうと、特定のenum型は他の全てのenum型と比較可能であるというような意味合い(不必要に型の範囲を拡張しすぎている)ことになります。`Comparable<E>`としてやれば、各enum型が「自分自身の型(=E)とのみ比較できるクラス」であることが(直接的とは言えませんが)より自然に表現できるわけです。
|
58
58
|
|
59
59
|
|
60
60
|
|
1
日本語訂正
test
CHANGED
@@ -38,7 +38,7 @@
|
|
38
38
|
|
39
39
|
`A implements Inf<A>`
|
40
40
|
|
41
|
-
のようにちょっとトリッキーな定義にします。こうすることで「派生クラスAそれ自体の型を引数と戻り値の型となるようなメソッド」であることをinterface上で明示できます。ちなみにこのような手法は標準ライブラリーに実例があります。javaの全ての列挙型(enum)は`Enum<E extends Enum<E>>`の派生クラスという扱いになってい
|
41
|
+
のようにちょっとトリッキーな定義にします。こうすることで「派生クラスAそれ自体の型を引数と戻り値の型となるようなメソッド」であることをinterface上で明示できます。ちなみにこのような手法は標準ライブラリーに実例があります。javaの全ての列挙型(enum)は`Enum<E extends Enum<E>>`の派生クラスという扱いになっています。そのEnumクラスは型引数を用いてしかもちょっとややこしい感じの定義になっており、そうしている理由は質問者さんが本件でやりたいことと同じ動機のためと言えるでしょう。こうしておくと
|
42
42
|
|
43
43
|
|
44
44
|
|