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 回答