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