java如何使用反射获取当前类中其他类中使用的对象?
我对反思的概念是新的。我在一个类中有JLabel,它是公共的,在另一个类中我获取所有公共字段,并检查它是否为JLabel类型,我想更改文本。为此,我使用下面的代码,这里我得到了所有字段,但我不能更改值,因为我从反射中得到的字段是我想要实际JLabel的字段类型,如果我得到它,我可以更改它的值。这是我的密码
Class clazz = LanguageTranslation.class;
Field[] fields = clazz.getFields();
for(Field f : fields ) {
try {
Class typ = f.getType();
System.out.println("Type is:"+f.getType()+"\t Name:"+f.getName());
if(typ.equals(JLabel.class)) {
/*System.out.println("Field " + f.getName() + " of translation " + languageTranslation + " is a JLabel!");
typ.setText("Hiiiii");*/
System.out.println(f);
typ.setText("Hiiiii");//Setting the text for label but its not working
}
} catch ( SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
有人能帮我吗
# 1 楼答案
# 2 楼答案
您需要
LanguageTranslation
实例来获取JLabel
然后可以使用Field类的方法
传递
ltObject
并获得JLabel
实例。在施法后,你可以调用setText()
更新:阅读commetns后。如果有
LanguageTranslation
实例,可以直接访问公共字段(包括JLabel)# 3 楼答案
不要站在线上,而要站在线下