您的位置 首页 java

java相关的反射机制Class类的使用

一:Class类的使用

java .lang.Class

获得Class的方法:1,实例.getClass

2,【类名】.Class

3,Class aclass=null;

aclass=Class.ForName(“java.lang.String”);

二:动态加载与静态加载

1,编译时刻加载的类为静态加载类; 运行时加载的类为动态加载类。

例如:动态加载Class c=Class.forName();

静态Student stu=new Student();

2,利用接口规范创建的实例,可以实现动态加载类,以及添加功能

例如:

接口

package Reflectt.service;

/**

* Created by zhouyongxing on 2016/11/21.

*/

public interface People {

void speak();

}

接口的实现类

package Reflectt;

import Reflectt.service.People;

/**

* Created by zhouyongxing on 2016/11/21.

*/

public class Student implements People{

String lecture=”我是工大的学生”;

public void speak(){

System.out.println(lecture);

}

}

Test 类

package Reflectt;

import Reflectt.service.People;

/**

* Created by zhouyongxing on 2016/11/21.

*/

public class Test {

public static void main(String [] args){

System.out.println(“start”);

try{

//在运行时动态加载类

Class Stu=Class.forName(“Reflectt.Student”); //这里字符串可以为变量的,实现动态效果

People people=(People) Stu.newInstance();

people.speak();

}catch(ClassNotFoundException e) {

System.out.println(“没找到Student类”);

} catch (InstantiationException e) {

e.printStackTrace();

} catch (IllegalAccessException e) {

e.printStackTrace();

}

}

}

三:获取类中的信息

(主要食用getXXX方法,具体方法可以查看源代码活着官方文档)

四:反射的基本操作

1,获取方法:方法名和方法的参数的列表可以唯一确定一个方法

2,例如

package Reflectt.service;

import Reflectt.Student;

import java.lang.reflect.Method;

/**

* Created by zhouyongxing on 2016/11/21.

*/

public class ReflectDemo1 {

public static void main(String [] args) {

try {

Student student = new Student();

Class c =student.getClass();

Method method = c.getMethod(“print”, String.class,String.class); //通过方法名和参数列表获取方法

method.invoke(student,”afafad”,”jfkadjfk”); //调用实力对象的方法,并传入参数。如果有返回类型,则返回Object需要强制转换。如果方法的返回类型为void,则返回null

}catch (Exception e){

System.out.print(“出错”);

}

文章来源:智云一二三科技

文章标题:java相关的反射机制Class类的使用

文章地址:https://www.zhihuclub.com/187306.shtml

关于作者: 智云科技

热门文章

网站地图