相当巴洛克式的名字是你所追求的。我通常最终不得不阅读javadoc,以确保我以正确的方式获得它:Class.isAssignableFrom
确定此 Class 对象所表示的类或接口是否与指定的 Class 参数所表示的类或接口相同,或者是否是其超类或超接口。如果是这样,则返回 true;否则,它将返回 false。如果此 Class 对象表示基元类型,则当指定的 Class 参数恰好是此 Class 对象时,此方法返回 true;否则,它将返回 false。
具体而言,此方法测试指定的 Class 参数所表示的类型是否可以通过标识转换或通过加宽引用转换转换为此 Class 对象所表示的类型。
例如:
public class X {
public int i;
public static void main(String[] args) throws Exception {
Class<?> myType = Integer.class;
Object o = new X();
for (Field field : o.getClass().getFields()) {
if (field.getType().isAssignableFrom(myType)) {
System.out.println("Field " + field + " is assignable from type " + o.getClass());
}
}
}
}