3

たとえば、ジェネリッククラスがあるとします。

public class Attribute<T> {

}

特定のタイプに特定のメソッドを使用することは可能ですか? つまり、特定の種類の型のジェネリック クラスを拡張するには?

例えば:

に追加のメソッドを追加したいのですAttribute<String>が、そうではありませんAttribute<Integer>

4

4 に答える 4

3

Java では、そのような直接的な可能性はありません。

ただし、StringAttributeそれを拡張Attribute<String>して、必要なメソッドを追加することができます。Attribute<Integer>forIntegerStringAttributeforなどを構築する依存性注入の方法で、一種のファクトリを作成できますString

于 2012-06-14T18:20:47.773 に答える
2

直接ではありませんが、これを行うことができます...

public class StringAttribute extends Attribute<String>
{
    public String myNewMethod() ...
    ....
}
于 2012-06-14T18:20:22.267 に答える
1

次のようなことができます。

public abstract class Attribute<T> {
    public abstract T getValue();
}

public class Attr1 extends Atrribute<String> {

   @Override 
   public String getValue() {
      return "smth"
   }
}

Tジェネリック型と同じジェネリック型を持つ抽象メソッドを持つ抽象クラスを作成します。次に、ジェネリックの代わりに実オブジェクトを指定することで、他のクラスがそれを拡張できます。

于 2012-06-14T18:21:07.793 に答える
0

あなたのクラスは抽象的でなければなりません:

public abstract class Attribute<T> {
  void someMethod(T object);
}

次に、次のようなサブクラスを追加します。

public AttributeString<T extends String> extends Attribute<T>{
    void someMethod(T object){
    }
}
于 2012-06-14T18:22:57.163 に答える