アドバンストJavaジェネリックスの知識の初心者レベルでは相対的にスケーリングされています。私は以下のように示されている。この複数のバインドされたJavaジェネリック型を使用してインタフェースを定義する
public interface Transformer {
<T extends String & List<String>> T transform(String input) throws
IOException;
}
私の実装クラスAのようなインターフェース何かを定義したい:私は持っていると思いますどのような
public Class A implements Transformer{
....
....
@Override
public <T extends String & List<String>> T transform(String input) throws IOException {
String response = "a";
return response; // compilation error "Incompatible Types: Required T but found java.lang.String"
}
}
:実装クラスは、文字列の入力を渡すことができるはずですし、戻り値の型はStringまたはListです。実装クラスには、戻り値の型を自由に選択できる自由度があります。
質問: 1.コンパイルエラー "互換性のないタイプ:必須Tですが、java.lang.Stringが見つかりました"が表示されるのはなぜですか?
変換メソッドの戻り値は、Stringを拡張する必要があります(Stringはfinalなので、変換できません)。Listインターフェイスを実装します。私はあなたが望む何かを非常に疑っています...あなたの目標が明確になるようにあなたの質問を言い換えるべきです... –