设为首页 加入收藏

TOP

一个例子让你了解Java反射机制(三)
2014-11-24 02:33:44 来源: 作者: 【 】 浏览:3
Tags:一个 例子 了解 Java 反射 机制
public static void Demo7() throws ClassNotFoundException, SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException, InstantiationException
{
Class< > class1 = null;
class1 = Class.forName("cn.lee.demo.SuperMan");

System.out.println("Demo7: \n调用无参方法fly():");
Method method = class1.getMethod("fly");
method.invoke(class1.newInstance());

System.out.println("调用有参方法walk(int m):");
method = class1.getMethod("walk",int.class);
method.invoke(class1.newInstance(),100);
}

/**
* Demo8: 通过Java反射机制得到类加载器信息
*
* 在java中有三种类类加载器。[这段资料网上截取]


1)Bootstrap ClassLoader 此加载器采用c++编写,一般开发中很少见。


2)Extension ClassLoader 用来进行扩展类的加载,一般对应的是jre\lib\ext目录中的类


3)AppClassLoader 加载classpath指定的类,是最常用的加载器。同时也是java中默认的加载器。
*
* @throws ClassNotFoundException
*/
public static void Demo8() throws ClassNotFoundException
{
Class< > class1 = null;
class1 = Class.forName("cn.lee.demo.SuperMan");
String nameString = class1.getClassLoader().getClass().getName();

System.out.println("Demo8: 类加载器类名: " + nameString);
}



}
/**
*
* @author xiaoyaomeng
*
*/
class Person{
private int age;
private String name;
public Person(){

}
public Person(int age, String name){
this.age = age;
this.name = name;
}


public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}


class SuperMan extends Person implements ActionInterface
{
private boolean BlueBriefs;

public void fly()
{
System.out.println("超人会飞耶~~");
}

public boolean isBlueBriefs() {
return BlueBriefs;
}
public void setBlueBriefs(boolean blueBriefs) {
BlueBriefs = blueBriefs;
}


@Override
public void walk(int m) {
// TODO Auto-generated method stub
System.out.println("超人会走耶~~走了" + m + "米就走不动了!");
}
}
interface ActionInterface{
public void walk(int m);
}


个人觉得使用反射机制的一些地方:


1.工厂模式:Factory类中用反射的话,添加了一个新的类之后,就不需要再修改工厂类Factory了


2.数据库JDBC中通过Class.forName(Driver).来获得数据库连接驱动


3.分析类文件:毕竟能得到类中的方法等等


4.访问一些不能访问的变量或属性:破解别人代码


Demo下载地址


具体下载目录在 /2013年资料/11月/1日/一个例子让你了解Java反射机制


相关阅读


首页 上一页 1 2 3 下一页 尾页 3/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Android 中 ScrollView滚动不到最.. 下一篇J2EE中的MVC模型介绍

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: