Java 变量中的属性名称

Java 变量中的属性名称,java,Java,);如何使用字符串变量的值作为属性或方法名 想做这样的事情: class Person { public String firstname; } String myAttributeName="firstname"; Person obj = new Person(); String firstNameOfObj = obj.{myAttributeName}; 如果确实要这样做,可以使用反射: Person obj = new Person(); Method method = P

);如何使用字符串变量的值作为属性或方法名

想做这样的事情:

class Person {
    public String firstname;
}

String myAttributeName="firstname";
Person obj = new Person();
String firstNameOfObj = obj.{myAttributeName};
如果确实要这样做,可以使用反射:

Person obj = new Person();
Method method = Person.class.getMethod("getFirstname");
String firstname = method.invoke(obj); 
但如注释中所述,最好使用贴图来保存属性值:

class Person {
   private Map<String,Object> attrs = new HashMap<>();

   public void setAttribute(String attr, Object value)
   {
      attrs.put(attr,vaue);
   }

   public Object getAttribute(String attr)
   {
      attrs.get(attr);
   }

}

Person person = new Person();
person.setAttribute("firstname","patrick");
String firstname = (String)person.getAttribute("firstname");
班级人员{
私有映射attrs=newhashmap();
公共void setAttribute(字符串属性,对象值)
{
属性put(attr,vaue);
}
公共对象getAttribute(字符串属性)
{
attrs.get(attr);
}
}
Person=新人();
person.setAttribute(“firstname”、“patrick”);
String firstname=(String)person.getAttribute(“firstname”);
如果您确实想这样做,可以使用反射:

Person obj = new Person();
Method method = Person.class.getMethod("getFirstname");
String firstname = method.invoke(obj); 
但如注释中所述,最好使用贴图来保存属性值:

class Person {
   private Map<String,Object> attrs = new HashMap<>();

   public void setAttribute(String attr, Object value)
   {
      attrs.put(attr,vaue);
   }

   public Object getAttribute(String attr)
   {
      attrs.get(attr);
   }

}

Person person = new Person();
person.setAttribute("firstname","patrick");
String firstname = (String)person.getAttribute("firstname");
班级人员{
私有映射attrs=newhashmap();
公共void setAttribute(字符串属性,对象值)
{
属性put(attr,vaue);
}
公共对象getAttribute(字符串属性)
{
attrs.get(attr);
}
}
Person=新人();
person.setAttribute(“firstname”、“patrick”);
String firstname=(String)person.getAttribute(“firstname”);
如果您确实想这样做,可以使用反射:

Person obj = new Person();
Method method = Person.class.getMethod("getFirstname");
String firstname = method.invoke(obj); 
但如注释中所述,最好使用贴图来保存属性值:

class Person {
   private Map<String,Object> attrs = new HashMap<>();

   public void setAttribute(String attr, Object value)
   {
      attrs.put(attr,vaue);
   }

   public Object getAttribute(String attr)
   {
      attrs.get(attr);
   }

}

Person person = new Person();
person.setAttribute("firstname","patrick");
String firstname = (String)person.getAttribute("firstname");
班级人员{
私有映射attrs=newhashmap();
公共void setAttribute(字符串属性,对象值)
{
属性put(attr,vaue);
}
公共对象getAttribute(字符串属性)
{
attrs.get(attr);
}
}
Person=新人();
person.setAttribute(“firstname”、“patrick”);
String firstname=(String)person.getAttribute(“firstname”);
如果您确实想这样做,可以使用反射:

Person obj = new Person();
Method method = Person.class.getMethod("getFirstname");
String firstname = method.invoke(obj); 
但如注释中所述,最好使用贴图来保存属性值:

class Person {
   private Map<String,Object> attrs = new HashMap<>();

   public void setAttribute(String attr, Object value)
   {
      attrs.put(attr,vaue);
   }

   public Object getAttribute(String attr)
   {
      attrs.get(attr);
   }

}

Person person = new Person();
person.setAttribute("firstname","patrick");
String firstname = (String)person.getAttribute("firstname");
班级人员{
私有映射attrs=newhashmap();
公共void setAttribute(字符串属性,对象值)
{
属性put(attr,vaue);
}
公共对象getAttribute(字符串属性)
{
attrs.get(attr);
}
}
Person=新人();
person.setAttribute(“firstname”、“patrick”);
String firstname=(String)person.getAttribute(“firstname”);
使用一个新的密码。Java不是Javascript。请使用。Java不是Javascript。请使用。Java不是Javascript。请使用。Java不是Javascript。