定義上、文字列パラメーターのみで動作するはずのクラスがあります。
だから私は使用することを考えました
class MyClass<T extends String>
しかし、コンパイラは文字列が最終的なものであり、それを拡張できないという警告を出します
それから試してみました
class MyClass<String>
パラメータ文字列がクラス文字列を隠しているため、警告が表示されました。
どうすればいいですか?
啓発的なコメントのおかげで:「本当にジェネリックが必要ですか?」
コードを確認したところ、問題が見つかりました。型パラメーターを使用してインターフェイスを実装しているため、型パラメーターを使用したかった
interface MyInterface<T>
何らかの理由で、次のような実装クラスに型パラメーターが必要だと思いました。
class MyClass<String> implements MyInterface<T>
しかし、それは意味がありません。私がしなければならなかったことは次のとおりです。
class MyClass implements MyInterface<String>
解決しました:)
ジェネリックはまったく必要ないように思えます。必要がなければ、コードを過度に複雑にするべきではありません。クラスが文字列パラメーターのみで動作することになっている場合は、ジェネリック部分を省略してください。
したがって、代わりに:
class MyClass<T extends String> {
T myMethod() {
//...
}
//...
}
ただ行う:
class MyClass {
String myMethod() {
//...
}
//...
}