扩展某些类型的泛型类?

时间:2012-06-14 18:15:08

标签: java generics

如果说我有一些泛型类,例如:

public class Attribute<T> {

}

现在是否可以针对特定类型设置特定方法?即扩展某些类型的泛型类?

例如:

我想为Attribute<String>添加额外的方法,但不是说Attribute<Integer>

4 个答案:

答案 0 :(得分:3)

Java中没有这种直接的可能性。

但是您可以StringAttribute扩展Attribute<String>并添加您想要的方法。你可以以依赖注入的方式制造一种工厂,它将构造例如Attribute<Integer>IntegerStringAttributeString

答案 1 :(得分:2)

不是直接的,但你可以这样做......

public class StringAttribute extends Attribute<String>
{
    public String myNewMethod() ...
    ....
}

答案 2 :(得分:1)

您可以这样做:

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

public class Attr1 extends Atrribute<String> {

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

创建一个抽象类,它将具有泛型类型T和具有相同泛型类型的抽象方法。然后其他类可以通过指定真实对象而不是泛型来扩展它。

答案 3 :(得分:0)

你的课应该是抽象的:

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

然后添加子类,例如:

public AttributeString<T extends String> extends Attribute<T>{
    void someMethod(T object){
    }
}