如果说我有一些泛型类,例如:
public class Attribute<T> {
}
现在是否可以针对特定类型设置特定方法?即扩展某些类型的泛型类?
例如:
我想为Attribute<String>
添加额外的方法,但不是说Attribute<Integer>
。
答案 0 :(得分:3)
Java中没有这种直接的可能性。
但是您可以StringAttribute
扩展Attribute<String>
并添加您想要的方法。你可以以依赖注入的方式制造一种工厂,它将构造例如Attribute<Integer>
为Integer
,StringAttribute
为String
。
答案 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){
}
}