2015-12-28 37 views
1

Javadoc分配說String實現Comparable<String>爲什麼Java的字符串不是可比接口

但是,下面的代碼返回false

String.class.isAssignableFrom(Comparable.class) 

如何檢查是否一些類實現給定的接口?

+0

instanceof將幫助那裏 – Stultuske

+0

我有類對象本身不是對象。 –

+3

您應該閱讀['isAssignableFrom'](https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html#isAssignableFrom-java.lang.Class-)的JavaDoc,然後你會知道,你切換了對象和參數。它應該是'Comparable.class.isAssignableFrom(String.class)'。 – Tom

回答

5

你誤會了isAssignableFrom(cls)的操作。引述的Javadoc:

判定此Class對象所表示的類或接口或者是相同,或是一個超類或超接口中,通過指定的Class參數所表示的類或接口。如果是的話,它返回true;否則返回false。如果此Class對象表示基本類型,則此方法返回true,如果指定的Class參數恰好是此Class對象;否則返回false。

這意味着,當你正在檢查

String.class.isAssignableFrom(Comparable.class) 

你實際上檢查是否String類是超一流的Comparable類的,而不是周圍的其他方式。您應該檢查:

Comparable.class.isAssignableFrom(String.class) 
+0

非常感謝你。 :D尼斯時間:D –

1

您必須反轉對象和參數。 代替

String.class.isAssignableFrom(Comparable.class) 

必須使用

Comparable.class.isAssignableFrom(String.class) 

javadoc

確定是否由此類對象所表示的類或接口 或者相同as,或者是a sup er類或超級接口, 類或接口由指定的類參數表示。如果是這樣,它將返回true;否則返回false。

相關問題