基于字符串android的调用函数

Gau*_*hah 2 java android function

我有类似这样的课

class MClass
{
private int mem1,mem2,mem3.......;
public int getmem1()
{
return mem1;
}
public int getmem2()
{
return mem2;
}

......
Run Code Online (Sandbox Code Playgroud)

现在我想要这样的东西:

public int getAttr(String attr)
{
if (attr=="mem1")
return mem1;
elseif (attr=="mem2")
return mem2;
.....
Run Code Online (Sandbox Code Playgroud)

如何为1000s attr实现getAttr?

请不要让我把mem作为数组...由于程序的其他部分而无法实现.

Joh*_*n B 7

使用反射.反射

这将允许您在运行时使用方法名称作为String调用任何公共方法.

Class c = Class.forName("MyClass");
Method m = c.getMethod("get"+arg);
return (Integer) m.invoke(this);
Run Code Online (Sandbox Code Playgroud)

  • 然后他必须定义数以千计的getXXX方法,不要认为这将作为解决方案 (2认同)