省略したエラーメッセージは、余分な詳細ではありません。「これについてはScalaからのサポートも期待します」に関しては、エラーメッセージを読んでプロセスに参加し、理解できない場合は、漠然と言い換えるのではなく、質問するときにそれらを含めることもできます。
エラーメッセージ、それらは重要です。彼らが混乱しているときでさえ。特に彼らが混乱しているとき。
2.8.1のエラーは次のとおりです。
a.scala:2: error: overriding method getScore in trait Solution of type ()Score[_ <: Score];
method getScore has incompatible type
def getScore: Score[_] = null
^
one error found
トランクのエラーは次のとおりです。
a.scala:2: error: overriding method getScore in trait Solution of type ()Score[_ <: AnyRef];
method getScore has incompatible type
def getScore: Score[_] = null
^
one error found
そこには重要な違いがあります。これは、エラーメッセージの指示に従って、トランクで機能する理由に影響します。
// this compiles with 2.9, but not with 2.8
class MySolution extends Solution {
def getScore: Score[_ <: AnyRef] = null
}
生の型ScoreがJavaソースで使用されている方法(ある場所では型コンストラクターとして、別の場所では暗黙の実存型引数を使用し、2番目の外観が最初の外観を境界付けている)、どこでも機能するのは不思議です。この種のものに対応することで、コンパイラにすでにどれだけのダメージが与えられているかを知りたくありません。生のタイプがうまく機能すればいいのは事実ですが、多くのことがいいでしょう。不可能なこともあれば、望ましくないこともあります。また、船を浮かせておく少数の人々の努力が必要なこともあります。生のタイプはトリプルクラウンを獲得します。