gpt4 book ai didi

java - 如何通过名称作为字符串访问对象的字段/方法

转载 作者:行者123 更新时间:2023-11-28 10:20:32 25 4
gpt4 key购买 nike

假设我有一个类

class A {
string name;
int age;
string gender;
//assuming all the constructors, getters and setters are present
}

为了简单起见,假设所有这些成员都是公共(public)的,为了访问它们,我创建了该类的一个对象,如下所示

A a = new A();

有没有办法按如下方式访问每个成员

String string = "age"

a.string

并获取对象的年龄等。同样,假设我有一个 getter,我可以使用

访问它吗?
String string = "getAge()";
a.string;

我是一名初学者 java 程序员,试图优化用 swift 编写的代码(不用说我是 swift 的新手),它有一个包含 50 多个成员的类,并在其他模块中设置/获取每个成员非常乏味。

只是想知道这在任何一种编程语言中是否可行。在 Java 中,我假设使用类反射可能会发生类似的事情,但不是很确定。

最佳答案

好吧,你可以使用 reflection ,然后做类似的事情:

A a = new A();
Class cls = a.getClass();

//read a method value
String methodName = "getAge";
Method method = cls.getDeclaredMethod(methodName);
int methodReturnedResult = method.invoke(a, null);

//read a field value
String fieldName = "age";
Field field = cls.getDeclaredField(fieldName);
int fieldValue = field.get(a);

This is another example
Java Reflection tutorial

虽然重要的是要注意反射不适用于这些情况,并且它不是被认为是在这些场景中使用反射的良好设计。你需要做的就是利用IDE的能力自动为你生成setter和getter。
你使用哪个IDE?大多数 Java IDE 都具有根据类字段自动生成 getter 和 setter 的能力。

这就是您在 Eclipse 中的做法, Netbeans , IntellijAndroid Studio .

关于java - 如何通过名称作为字符串访问对象的字段/方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35754057/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com