我有一个方法,通常从列表中获取一个项目,并具有以下签名:
myMethod(T item)
Run Code Online (Sandbox Code Playgroud)
我想使用这种方法,但我知道我发送的方法.
SpecificItem myItem = new SpecificItem();
myMethod((T) myItem);
Run Code Online (Sandbox Code Playgroud)
这不适合我.这是不良代码的标志吗?
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;
}
}
Run Code Online (Sandbox Code Playgroud)
如果您实例化此类,则将变量类型T与实际类型进行交换:
MyClass<SpecificItem > concreteClass = new MyClass<SpecificItem >();
Run Code Online (Sandbox Code Playgroud)
如果你调用myMethod这个实例,你必须提供一个SpecificItem,因为SpecificItem这个实例的泛型类型.
(我不确定我的帖子回答你的问题,请评论,以便我可以改进它)
| 归档时间: |
|
| 查看次数: |
819 次 |
| 最近记录: |