我有一个方法通常从列表中获取一个项目并具有以下签名:
myMethod(T item)
我想使用这个方法,但我知道我发送的是什么方法。
SpecificItem myItem = new SpecificItem();
myMethod((T) myItem);
这对我来说不太合适。这是错误代码的标志吗?
最佳答案
myMethod
在泛型类中定义,有点像:
public class MyClass<T> {
T myItem;
public void myMethod(T item) {
// do Something with item
}
public T myOtherMethod() {
myMethod(myItem); // casting is not necessary
return myItem;
}
}
如果实例化此类,则将变量类型 T
替换为真实类型:
MyClass<SpecificItem > concreteClass = new MyClass<SpecificItem >();
如果您在此实例上调用 myMethod
,则必须提供一个 SpecificItem
,因为 SpecificItem
是此实例的通用类型。
(我不确定我的帖子是否回答了您的问题,请发表评论以便我改进)
关于java - 没有集合的泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3609374/