【发布时间】:2016-06-15 17:01:39
【问题描述】:
假设我有一堂课
class A {
string name;
int age;
string gender;
//assuming all the constructors, getters and setters are present
}
为了简单起见,假设所有这些成员都是公共的,为了访问它们,我创建了一个该类的对象,如下所示
A a = new A();
有没有办法访问每个成员如下
String string = "age"
a.string
并获取对象的年龄等。 同样,假设我有一个 getter,我可以使用它访问它吗
String string = "getAge()";
a.string;
我是一名初学者 java 程序员,试图优化用 swift 编写的代码(不用说我是 swift 的新手),它有一个包含 50 多个成员的类,并在其他模块中设置/获取它们中的每一个很乏味。
只是想知道这是否可以在任何一种编程语言中实现。在 java 中,我假设使用类反射可能会发生这样的事情,但不是很确定。
【问题讨论】:
-
是的,您必须使用反射,但一般来说,这也是一种明显的代码异味。
-
一定要改变 java 约定,并期望将私有变量假定为公共变量。我建议在示例中声明 public。
-
说到代码味道:“一个有 50 多个成员的类”。
-
Reflections 具有在运行时检查类的 API,包括访问类字段及其方法。此外,您可以根据需要调用这些方法或填充字段。
-
@AndyTurner 该类是具有 50 多个属性的数据库表之一的映射器类,我正在使用 swift 中的字典对其进行填充。