有没有办法知道字段是否扩展了java.awt.Component?
我使用refection获取类的声明字段。现在我只需要选择那些UI组件,例如JLabel、JFrame等。有没有办法确定某个特定类型是否扩展了java.awt.component有没有办法知道字段是否扩展了java.awt.Component?,java,swing,reflection,field,Java,Swing,Reflection,Field,我使用refection获取类的声明字段。现在我只需要选择那些UI组件,例如JLabel、JFrame等。有没有办法确定某个特定类型是否扩展了java.awt.component 我确实设法获得了字段的通用类型,但是我需要的是能够确定字段是否扩展了您可以使用的java.awt.component的字段实例。如果您已经在使用反射,则可以使用该组件。这应该可以: <Object instance>.getClass().isAssignableFrom(Component.class);
我确实设法获得了字段的通用类型,但是我需要的是能够确定字段是否扩展了您可以使用的java.awt.component的字段实例。如果您已经在使用反射,则可以使用该组件。这应该可以:
<Object instance>.getClass().isAssignableFrom(Component.class);
我已经写了一个例子来说明如何做到这一点。 在下面找到被调查的班级:
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.JWindow;
public class Foo {
int i;
long j;
String s;
JTable table;
JLabel label;
JWindow window;
}
下面是检查此类字段的代码:
import java.lang.reflect.Field;
public class Test {
public static void main(String[] args) {
new Test().run();
}
private void run() {
Class<?> c = Foo.class;
System.out.println("The following fields extend Component: ");
for (Field f : c.getDeclaredFields()) {
Class<?> fieldClass = f.getType();
Class<java.awt.Component> compClass = java.awt.Component.class;
if (compClass.isAssignableFrom(fieldClass)) {
System.out.println(f.getName());
}
}
}
}
输出:
The following fields extend Component:
table
label
window
存在吗?“我猜你是指瞬间?”阿德米班,当然。只是和python混淆了。谢谢