当前位置: 首页 > 知识库问答 >
问题:

如何访问一个对象的属性,这个对象的类是由Java中的一个属性定义的?[重复]

汪翰墨
2023-03-14

我想要一个方法,它返回一个Object,该Object被赋予一个类,该类取决于传递的String的值

 public static Object createObject(String classname){
    Object myobject = null;
     try {
            Class myclass = Class.forName(classname);
            myobject = myclass.newInstance();
            System.out.println(myobject.objectAttribute);
    }catch(Exception e){
    }
    return myobject;

}

然后,我希望能够打印出一个属性(例如对象属性),我知道它将由类名可以表示的所有可能的类持有。可能的类在单独的文件中定义。但是编译器给错误找不到符号对象属性。我如何访问这个对象的属性?

抱歉,问题措辞不当

感谢您的任何帮助

共有2个答案

薛弘厚
2023-03-14

正如编译器所说,java.lang.Object 没有 objectAttribute 字段,因此您无法通过 Object 引用访问它。如果你有一些已知的基类提供此属性,你可以直接将myobject强制转换为它:

System.out.println(((BaseClass) myobject).objectAttribute);

否则,您可以依靠反射:

Field field  = myclass.getField("objectAttribute");
System.out.println(field.get(myobject));
郑正阳
2023-03-14

您可以使用getFields()方法访问所有字段,例如:

Class myclass = Class.forName("ClassName");
Field[] fields = myclass.getDeclaredFields();
for(Field field : fields) {
    System.out.println(field.getName());
}
 类似资料:
  • 问题内容: 是否有一种优雅的方式来访问对象的第一个属性… 您不知道物业名称的地方 而不使用像jQuery这样的循环 例如,我需要在不知道foo1名称的情况下访问对象: 问题答案: var obj = { first: ‘someVal’ }; obj[Object.keys(obj)[0]]; //returns ‘someVal’ 使用此方法,您还可以通过索引访问其他属性。请注意!根据ECMAS

  • 假设我们有一个这样定义的对象A: 出于某种原因,我需要创建第二个对象B,它只具有对象A的前两个属性: 所以我的问题是:将对象A复制到对象B的最佳方法是什么?我一直在逐个复制获取者和设置者的属性,但有些事情告诉我一定有更好的方法来做到这一点!特别是当对象将具有很多属性时,我必须编写一行又一行的代码,只是为了将它们全部复制到第二个对象B... 多谢了:) 编辑:我一直被一个“另一个问题的可能重复”提醒

  • rank ▲ ✰ vote url 54 397 83 538 url 如何知道一个对象有一个特定的属性? 有什么方法可以检测一个对象是否有某些属性?比如: >>> a = SomeClass() >>> a.someProperty = value >>> a.property Traceback (most recent call last): File "<stdin>", line 1

  • 我有一个微不足道的问题,但由于某种原因我无法解决。 我有一个对象,它是来自API的返回请求: 和: 第一部分是在react组件之前首先出现的内容。我能够获取一个对象,然后创建一个返回另一个对象的变量(const),在本例中: 对于我的无知,奇怪的部分是,如果我试图以这种方式访问第一个值(feels_like): 它将抛出一个错误,即无法读取未定义的属性feels_like。 现在,我试图循环遍历对

  • 我有一个包含对象的数组,它们是反应组件上的道具 我想抓住第一个物体的细节,因为它是 我可以这样做: 如何获取所有剩余的键和值,并将它们存储在组件状态中?

  • 已更新-arr3中的id属性的顺序应与arr1中的id属性的顺序相同