摘要:本文主要向大家介绍了JAVA语言相关的反射机制Class类的使用,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。
本文主要向大家介绍了JAVA语言相关的反射机制Class类的使用,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。
一: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频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号