gpt4 book ai didi

java - 为什么 TreeSet.contains() 不起作用?

转载 作者:搜寻专家 更新时间:2023-10-31 08:24:39 27 4
gpt4 key购买 nike

public class Empty {

public static void main( String[] args ) {

TreeSet<Class> classes = new TreeSet<Class>();
classes.add( String.class );

String test = new String();

try{
if( classes.contains(test.getClass()) ){
System.out.println( "contains" );
}
}catch(ClassCastException cce){

System.out.println( "Expected: " + classes );
System.out.println( "But it was: " + test.getClass() );
}
}
}

为什么会抛出 ClassCastException

最佳答案

在没有显式比较器的情况下实例化 TreeSet 时,它希望插入的元素实现 Comparable,但 Class 不实现此接口(interface)。

要修复,请为 Class 创建一个比较器:

Comparator<Class> classComp = new Comparator<Class>()
{
@Override
public int compare(Class o1, Class o2)
{
return o1.getName().compareTo(o2.getName());
}
};
TreeSet<Class> classes = new TreeSet<Class>(classComp);

关于java - 为什么 TreeSet.contains() 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3501997/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com