Javadoc分配说String
实现Comparable<String>
为什么Java的字符串不是可比接口
但是,下面的代码返回false
:
String.class.isAssignableFrom(Comparable.class)
如何检查是否一些类实现给定的接口?
Javadoc分配说String
实现Comparable<String>
为什么Java的字符串不是可比接口
但是,下面的代码返回false
:
String.class.isAssignableFrom(Comparable.class)
如何检查是否一些类实现给定的接口?
你误会了isAssignableFrom(cls)
的操作。引述的Javadoc:
判定此Class对象所表示的类或接口或者是相同,或是一个超类或超接口中,通过指定的Class参数所表示的类或接口。如果是的话,它返回true;否则返回false。如果此Class对象表示基本类型,则此方法返回true,如果指定的Class参数恰好是此Class对象;否则返回false。
这意味着,当你正在检查
String.class.isAssignableFrom(Comparable.class)
你实际上检查是否String
类是超一流的Comparable
类的,而不是周围的其他方式。您应该检查:
Comparable.class.isAssignableFrom(String.class)
非常感谢你。 :D尼斯时间:D –
您必须反转对象和参数。 代替
String.class.isAssignableFrom(Comparable.class)
必须使用
Comparable.class.isAssignableFrom(String.class)
从javadoc:
确定是否由此类对象所表示的类或接口 是或者相同as,或者是a sup er类或超级接口, 类或接口由指定的类参数表示。如果是这样,它将返回true;否则返回false。
instanceof将帮助那里 – Stultuske
我有类对象本身不是对象。 –
您应该阅读['isAssignableFrom'](https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html#isAssignableFrom-java.lang.Class-)的JavaDoc,然后你会知道,你切换了对象和参数。它应该是'Comparable.class.isAssignableFrom(String.class)'。 – Tom