提问人:10969_ shirazu_ 提问时间:12/21/2022 更新时间:12/21/2022 访问量:125
如何检查对象是否是 JAVA 中泛型类型的实例?
How do you check if an object is an instance of a generic type in JAVA?
问:
所以我需要编写一个名为 frequency 的方法来计算集合中 E 类型的 Object 的出现次数(我什至不确定该集合是否应该像我一样是一个链表,或者我是否应该只调用构造函数,我只是想如果我不让它成为 LinkedList,那么命名类 LinkedListCollection 有什么意义) , 此方法采用 Object 类型的参数,我无法更改该参数,因为这是合约,这是代码:super()
public class LinkedListCollection<E> extends AbstractCollection<E> {
private int size;
private Collection<? extends E > list;
/**
* @ensures isEmpty();
*/
public LinkedListCollection() {
list = new LinkedList<>();
size = 0;
}
/**
*
* @param is the Collection of elements that should be placed in the list
*
* @requires c != null;
* @requires !c.contains(null);
* @ensures containsAll(c) && c.containsAll(this);
* @ensures size() == c.size();
*
* @throws NullPointerException is the param collection is null or contains null
*/
public LinkedListCollection(Collection<? extends E> c) {
if ((c == null) || (c.contains(null)) )
{
throw new NullPointerException();
}
list=new LinkedListCollection<>();
size=c.size();
list.addAll(c);
}
然后是我在频率方法中所做的
public int frequency(Object o) {
E newob= (E) o;
Iterator it = list.iterator();
int frequency= 0;
while(it.hasNext())
{
if (it.next().equals(newob))
frequency++;
}
return frequency;
}
现在要计算频率,我想首先检查对象是否是 E 的实例,但 isinstanceof 不适用于泛型类型,所以我只是执行了如您在上面看到的强制转换,我不相信这是正确的做法。此方法的正确编码方法是什么?我的构造函数正确吗?我们如何检查对象是否是泛型类型的实例?(我相信它也需要重新定义)
谢谢!equals
答: 暂无答案
评论
E
LinkedListCollection
LinkedListCollection
Collections.frequency
E
o
E
o
E
if( it.next().equals( o )
o
E
equals()