为什么Java的字符串不能从可比较的接口分配

为什么Java的字符串不能从可比较的接口分配,java,reflection,Java,Reflection,表示字符串实现了可比较的 但是,以下代码返回false: 如何检查某个类是否实现了给定的接口?您误解了什么在运行。引用Javadoc: 确定此类对象表示的类或接口是否与指定的类参数表示的类或接口相同,或者是其超类或超接口。如果是,则返回true;否则返回false。如果该类对象表示基元类型,则如果指定的类参数正是该类对象,则该方法返回true;否则返回false 这意味着当你检查 String.class.isAssignableFrom(Comparable.class) 实际上,您正在检查

表示字符串实现了可比较的

但是,以下代码返回false:


如何检查某个类是否实现了给定的接口?

您误解了什么在运行。引用Javadoc:

确定此类对象表示的类或接口是否与指定的类参数表示的类或接口相同,或者是其超类或超接口。如果是,则返回true;否则返回false。如果该类对象表示基元类型,则如果指定的类参数正是该类对象,则该方法返回true;否则返回false

这意味着当你检查

String.class.isAssignableFrom(Comparable.class)
实际上,您正在检查String类是否是可比较类的超类,而不是相反。您应该检查:

Comparable.class.isAssignableFrom(String.class)

你误解了什么在起作用。引用Javadoc:

确定此类对象表示的类或接口是否与指定的类参数表示的类或接口相同,或者是其超类或超接口。如果是,则返回true;否则返回false。如果该类对象表示基元类型,则如果指定的类参数正是该类对象,则该方法返回true;否则返回false

这意味着当你检查

String.class.isAssignableFrom(Comparable.class)
实际上,您正在检查String类是否是可比较类的超类,而不是相反。您应该检查:

Comparable.class.isAssignableFrom(String.class)

必须反转对象和参数。 而不是

String.class.isAssignableFrom(Comparable.class)
你必须使用

Comparable.class.isAssignableFrom(String.class)
发件人:

确定此类对象表示的类或接口 与的超类或超接口相同,或是的超类或超接口 由指定的类参数表示的类或接口。信息技术 如果是,则返回true;否则返回false


必须反转对象和参数。 而不是

String.class.isAssignableFrom(Comparable.class)
你必须使用

Comparable.class.isAssignableFrom(String.class)
发件人:

确定此类对象表示的类或接口 与的超类或超接口相同,或是的超类或超接口 由指定的类参数表示的类或接口。信息技术 如果是,则返回true;否则返回false


instanceof将有助于实现这一点,我让类对象而不是对象本身。您应该阅读的JavaDoc,然后您就会知道,您切换了对象和参数。它应该是可比较的。class.isAssignableFromString.class.instanceof将有助于实现这一点。我让类对象而不是对象本身。您应该阅读的JavaDoc,然后您就会知道,您切换了对象和参数。它应该是可比较的。class.isAssignableFromString.class。非常感谢好时机:谢谢你好时机