嘿,所以我有一个很长的switch语句,它基于像这样的字符串调用方法
private void callMethod(String name) {
switch(name) {
case "blah":
blah();
break;
case "method":
method()
break;
}
}
等
所以我用反射来缩短代码
try {
Method method = ClassName.class.getDeclaredMethod(name, args);
method.invoke(args);
} catch (NoSuchMethodException e) {
// switch default
}
只是想知道使用这样的反射是否会降低内存/性能。我只会经常调用此函数。
编辑:我使用此命令的原因是,用户可以根据输入的字符串来选择开始游戏的不同部分。启动事件的每种方法均以需要输入的内容命名。
使用这样的反射是一个坏主意。看一下here以获得有关缺点的信息。
关于演出:
“因为反射涉及动态解析的类型,所以无法执行某些Java虚拟机优化。因此,反射操作的性能比非反射操作慢,因此应避免在性能经常被调用的代码段中进行操作敏感的应用程序。“
[不要像普通工具一样将反射视为String
或ArrayList
,而是尝试实现适合您需求的更好的软件设计。这样,您就不必考虑此类问题的解决方法。