如果说我有一些通用类,例如:
public class Attribute<T> {
}
现在是否可以为特定类型提供特定方法?即为某些类型扩展泛型类?
例如:
我想添加额外的方法Attribute<String>
,但不是为了说Attribute<Integer>
。
Java 中没有这种直接的可能性。
但是您可以StringAttribute
扩展Attribute<String>
并添加您想要的方法。您可以以依赖注入方式创建一种工厂,它将构造例如Attribute<Integer>
forInteger
和StringAttribute
for String
。
不是直接的,但你可以这样做......
public class StringAttribute extends Attribute<String>
{
public String myNewMethod() ...
....
}
你可以这样做:
public abstract class Attribute<T> {
public abstract T getValue();
}
public class Attr1 extends Atrribute<String> {
@Override
public String getValue() {
return "smth"
}
}
创建一个抽象类,该类将具有泛型类型T
和具有相同泛型类型的抽象方法。然后其他类可以通过指定真实对象而不是泛型来扩展它。
你的类应该是抽象的:
public abstract class Attribute<T> {
void someMethod(T object);
}
然后添加子类,例如:
public AttributeString<T extends String> extends Attribute<T>{
void someMethod(T object){
}
}