java反射的用法,如果你看了还不会用我也没办法了
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java反射的用法,如果你看了还不会用我也没办法了,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2705字,纯文字阅读大概需要4分钟。
内容图文
![java反射的用法,如果你看了还不会用我也没办法了](/upload/InfoBanner/zyjiaocheng/755/bd8c2bf74d26484bb680ac0158f7fcc4.jpg)
记录下JAVA反射用法,应用场景就不提了,这里只提用法
public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, IllegalAccessException, InstantiationException, NoSuchFieldException {
Class<?> reflectionClass = Reflection.class;
Constructor c = reflectionClass.getConstructor(null);
Object r= c.newInstance();//构造器实例
Constructor c2 = reflectionClass.getConstructor(String.class);
c2.newInstance("hello");
Constructor c3 = reflectionClass.getConstructor(String.class,int.class);
c3.newInstance("小明",13);
System.out.println();
//通过反射获取实例的方法
Method method1=reflectionClass.getMethod("getName"); //获取共有getName方法
Method method2=reflectionClass.getMethod("getAge"); //获取共有getAge方法
Method method3=reflectionClass.getDeclaredMethod("setName",String.class); //获取私有setName方法 参数String
Method method4=reflectionClass.getDeclaredMethod("setAge",int.class); //获取私有setAge方法 参数String
method3.setAccessible(true); //设置操作权限
method4.setAccessible(true); //设置操作权限
method3.invoke(r,"小明"); //调用setName()
method4.invoke(r,14); //调用setAge()
System.out.println(method1.invoke(r)); //调用getName()
System.out.println(method2.invoke(r)); //调用getAge()
Field field =reflectionClass.getField("name"); //获取共有字段name
Field field2=reflectionClass.getDeclaredField("age");//获取私有字段age
field2.setAccessible(true); //设置私有字段可访问
System.out.println("\n============================修改前Feild的值=================================");
System.out.println(field.getName()+":"+field.get(r)+"\t访问权限:"+field.getModifiers()+"\t"+field.getType());
System.out.println(field2.getName()+":"+field2.get(r)+"\t访问权限:"+field2.getModifiers()+"\t"+field2.getType());
field.set(r,"小米"); //修改name字段的值
field2.set(r,15); //修改age字段的值
System.out.println("\n============================修改后Feild的值=================================");
System.out.println(field.getName()+":"+field.get(r)+"\t访问权限:"+field.getModifiers()+"\t"+field.getType());
System.out.println(field2.getName()+":"+field2.get(r)+"\t访问权限:"+field2.getModifiers()+"\t"+field2.getType());
}
Reflection.java
public class Reflection {
public String name;
private int age;
public Reflection() {
System.out.println("无参构造器");
}
public Reflection(String a) {
System.out.println("有参构造器:" + a);
}
public Reflection(String name, int age) {
System.out.println("多参构造器:" + name + "\t" + age);
}
private void setName(String name) {
this.name = name;
}
private void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
运行结果:
内容总结
以上是互联网集市为您收集整理的java反射的用法,如果你看了还不会用我也没办法了全部内容,希望文章能够帮你解决java反射的用法,如果你看了还不会用我也没办法了所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。