2

定義上、文字列パラメーターのみで動作するはずのクラスがあります。

だから私は使用することを考えました

class MyClass<T extends String>

しかし、コンパイラは文字列が最終的なものであり、それを拡張できないという警告を出します

それから試してみました

class MyClass<String>

パラメータ文字列がクラス文字列を隠しているため、警告が表示されました。

どうすればいいですか?

4

2 に答える 2

3

啓発的なコメントのおかげで:「本当にジェネリックが必要ですか?」

コードを確認したところ、問題が見つかりました。型パラメーターを使用してインターフェイスを実装しているため、型パラメーターを使用したかった

interface MyInterface<T>

何らかの理由で、次のような実装クラスに型パラメーターが必要だと思いました。

class MyClass<String> implements MyInterface<T>

しかし、それは意味がありません。私がしなければならなかったことは次のとおりです。

class MyClass implements MyInterface<String>

解決しました:)

于 2012-05-20T22:10:25.230 に答える
2

ジェネリックはまったく必要ないように思えます。必要がなければ、コードを過度に複雑にするべきではありません。クラスが文字列パラメーターのみで動作することになっている場合は、ジェネリック部分を省略してください。

したがって、代わりに:

class MyClass<T extends String> {
  T myMethod() {
    //...
  }
  //...
}

ただ行う:

class MyClass {
  String myMethod() {
    //...
  }
  //...
}
于 2012-05-20T22:20:25.463 に答える