instanceof无法正常工作?
|
我正在尝试创建一个实现Collection的类,因此它必须具有删除ѭ0的方法,因此我认为我将重复使用已经创建的方法来删除通用类型
T
的对象,但是它会引发编译时错误。为什么不行呢?
码
public class ArrayPP<T> implements Collection<T>
{
public boolean remove(Object o)
{
if (o instanceof T)
remove((T)o, true);
else
return false;
return true;
}
}
错误
ArrayPP.java:5: unexpected type
found : T
required: class or array
if (o instanceof T)
为什么,Java?
我已经解决了
if (t.getClass().isInstance(o))
remove((T)o, true);
else
return false;
return true;
但是...我的意思是,如果有人编码“ArrayPP<String> a = new ArrayPP<String>();
”,您知道T
就是String
,对吗?那么,为什么在运行时无法看到o
是String
?我的意思是,如果我要执行a.add(\'c\');
,它将不会编译,因为它知道在这里,ArrayPP
中的add(T item)
方法将只接受String
,所以为什么.........
没有找到相关结果
已邀请:
4 个回复
蜗仓馈
您是否在“收藏夹”实用程序中查看了“检查的收藏夹”。它可能会做您想要的。 http://download.oracle.com/javase/6/docs/api/java/util/Collections.htmlcheckedCollection、checkedList、checkedSet、checkedMap下
瞧叮
箩冀娥
茬贺努充尽
。 由于run1ѭ在运行时不存在,ѭ19should应该怎么做?当
是
时
应该做什么? 一个棘手的解决方法是使用
并据此做出决定。 快乐的编码。