我从jsp页面获取了一个字符串,可以用于switch语句
switch(value)
case 0: method0(); break;
case 1: method1(); break;
...
或者用于反射:
c.getMethod("method"+value, parameter);
...
哪种方法更有效?
我从jsp页面获取了一个字符串,可以用于switch语句
switch(value)
case 0: method0(); break;
case 1: method1(); break;
...
c.getMethod("method"+value, parameter);
...
反射并不更快,因为它需要经过额外的层级。
然而,使用反射来完成这样的任务是错误的方式,因为它使得代码难以维护,并且没有真正实现反射设计的目的。
lookupswitch
和tableswitch
。反射总会有一些开销
来自javadoc
因为反射涉及动态解析的类型, 某些Java虚拟机优化无法执行。 因此,反射操作的性能比它们的非反射对应物慢, 应该在性能敏感应用程序中频繁调用的代码段中避免使用。
使用 Switch
反射功能非常强大,但并不应该随意使用。如果可以在不使用反射的情况下完成操作,那么最好避免使用它。