JAVA语言相关的反射机制Class类的使用
小标 2019-01-09 来源 : 阅读 1116 评论 0

摘要:本文主要向大家介绍了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频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程