解决方案 »
- 谁写过 新浪微博 爬虫
- 热血三国网页游戏源码(快)
- 关于网页链接与JAVA APPLICATION的通信问题
- 郁闷一下午的问题,请高手解决一下......................................................^_^
- public abstract class WindowAdapter 为什么要定义成抽象类?
- Jpcap获取本地Tcpdump包出错,帮忙看看
- 怎么向一个已有的文本文件继续写入数据
- 我是初学者,请教各位大虾:JCreatorPro的环境变量如何设置?
- 英雄在哪儿?请问如何让WEBLOGIC6.1自带的例子程序跑起来???
- ListIterator实现逆序输出时没反应?
- 周末java资料大放送..欢迎来取
- this的用法
for (T t : list) {
try {
Method method = t.getClass().getMethod("getId");
System.out.println("使用反射:" + method.invoke(t) + ":"
+ t.getClass().getSimpleName());
} catch (Exception e) {
e.printStackTrace();
}
}
}
可以理解为一般应用开发的过程中不建议使用框架吗?
当然不是说不要用框架!
框架使用反射,一般是在启动的时候,只是一次性的(比如Spring的Bean加载,加载好了就放在内存里供使用)。
业务逻辑代码不要这样用反射,因为业务代码会频繁执行。你可以设计个测试类,测试一下反射和直接调用或者条件判断方式调用,看看耗时。
-----------------------
package com..test;import java.util.ArrayList;
import java.util.List;public class Main { /**
* @param args
*/
public static void main(String[] args) {
List<Base> arg =new ArrayList<Base>();
arg.add(new Base());
arg.add(new ClassA());
arg.add(new ClassB());
getFlag(arg);
} private static <T extends Base> void getFlag(List<T> arg){
for(T t : arg){
System.out.println(t.getId());
}
}
static class Base {
public String getId(){
return "Base-id";
}
} static class ClassA extends Base{
public String getId(){
return "A-id";
}
}
static class ClassB extends Base{
public String getId(){
return "B-id";
}
}
}
public abstract class ClassBase{
private int idpublic int getId(){
return id;
}
}public ClassA extends ClassBase{
}public ClassB extends ClassBase{
}public ClassC extends ClassBase{
}
private <T extends ClassBase> void getFlag(List<T extends ClassBase> list){
for(T t : list){
t.getId();
}
}