Ada*_*ler 25 java variables methods
假设我有Method1(void),Method2(void)......
有没有办法可以选择其中一个变量?
String MyVar=2;
MethodMyVar();
Run Code Online (Sandbox Code Playgroud)
Nat*_*hes 36
使用反射:
Method method = WhateverYourClassIs.class.getDeclaredMethod("Method" + MyVar);
method.invoke();
Run Code Online (Sandbox Code Playgroud)
只有通过反思.看java.lang.reflect包装.
你可以尝试类似的东西:
Method m = obj.getClass().getMethod("methodName" + MyVar);
m.invoke(obj);
Run Code Online (Sandbox Code Playgroud)
如果方法具有参数并且缺少各种异常处理,则代码可能会有所不同.
但问问自己这是否真的有必要?可以对您的设计进行更改以避免这种情况.反射代码很难理解,并且比调用慢obj.someMethod().
祝好运.快乐的编码.
小智 7
您可以使用策略设计模式以及从您拥有的字符串到相应的具体策略对象的映射.这是安全有效的手段.
所以,请HashMap<String,SomeInterfaceYouWantToInvokeSuchAsRunnableWithPseudoClosures>查看.
例如,有些东西:
final static YourType reciever = this;
HashMap<String,Runnable> m = new HashMap<String,Runnable> {{
put("a", new Runnable() {
@Override public void run () {
reciever.a();
}
});
....
}};
// but check for range validity, etc.
m.get("a").run()
Run Code Online (Sandbox Code Playgroud)
您也可以使用反射或"反转"问题并使用多态