回答編集履歴

3

説明補足

2018/02/11 18:13

投稿

KSwordOfHaste
KSwordOfHaste

スコア18394

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

表現変更

2018/02/11 18:13

投稿

KSwordOfHaste
KSwordOfHaste

スコア18394

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

日本語訂正

2018/02/11 04:44

投稿

KSwordOfHaste
KSwordOfHaste

スコア18394

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>>`の派生クラスという扱いになっていですが、Enumクラスが何故型引数を用いてしかもちょっとややこしい感じの定義になっているのですが、要するにそれは質問者さんが本件でやりたいことと同じ動機と言えるでしょう。こうしておくと
41
+ のようにちょっとトリッキーな定義にします。こうすることで「派生クラスAそれ自体の型を引数と戻り値の型となるようなメソッド」であることをinterface上で明示できます。ちなみにこのような手法は標準ライブラリーに実例があります。javaの全ての列挙型(enum)は`Enum<E extends Enum<E>>`の派生クラスという扱いになっています。そのEnumクラス型引数を用いてしかもちょっとややこしい感じの定義になっており、そうしている理由は質問者さんが本件でやりたいことと同じ動機のためと言えるでしょう。こうしておくと
42
42
 
43
43
 
44
44