当前位置:首页 > Java技术 > java反射实例

java反射实例

2022年08月04日 17:01:45Java技术2

反射:解刨类的构造函数和创建类的对象
那么就实例来看看:

  1 反射:解刨类的构造函数和创建类的对象
  2 那么就实例来看看:
  3 /*
  4 * Person  类
  5 */
  6  package t1.no3;
  7 
  8 public class Person {
  9 public String name="aaa";
 10 private int age=31;
 11 private static int pwd=123;
 12 public Person(){
 13 System.out.println("Person的无参的构造函数");
 14 }
 15 public Person(String name){
 16 System.out.println("Person的无有参的构造函数,name: "+name);
 17 }
 18 public Person(String name,int pwd,int age){
 19 System.out.println(name+","+pwd+","+age);
 20 }
 21 private Person(int age,String name){
 22 System.out.println(name+","+age);
 23 }
 24 public void say(){
 25 System.out.println("hello");
 26 }
 27 public void say(String name){
 28 System.out.println("hello name:"+name);
 29 }
 30 private void says(String name){
 31 System.out.println("hello name:"+name);
 32 }
 33 public static void sayss(){
 34 System.out.println("这是个静态的方法");
 35 }
 36 }
 37 /*
 38 *反射实例
 39 */
 40 package t1.no3;
 41 
 42 import java.lang.reflect.Constructor;
 43 import java.lang.reflect.Field;
 44 import java.lang.reflect.Method;
 45 
 46 import org.junit.Test;
 47 
 48 public class Demo4 {
 49 //反射public Person()构造函数
 50 @Test
 51 public void test1() throws Exception{
 52 Class clazz=Class.forName("t1.no3.Person");//反射类
 53 Constructor c=clazz.getConstructor(null);//反射构造函数
 54 Person pp= (Person) c.newInstance(null);//创建对象
 55 System.out.println(pp.name);
 56 }
 57 //反射public Person(String name)构造函数
 58 @Test //JUnit测试
 59 public void test2() throws Exception{
 60 Class clazz=Class.forName("t1.no3.Person");//反射类
 61 Constructor c=clazz.getConstructor(String.class);
 62 Person pp=(Person) c.newInstance("XXXXXXXX");
 63 System.out.println(pp.name);
 64 }
 65 //反射public Person(String name,int pwd,int age)构造函数
 66 @Test
 67 public void test3() throws Exception{
 68 Class clazz=Class.forName("t1.no3.Person");//反射类
 69 Constructor c=clazz.getConstructor(String.class,int.class,int.class);
 70 Person pp=(Person) c.newInstance("XXXXXXXX",123456,30);
 71 System.out.println(pp.name);
 72 }
 73 //反射private Person(int age,String name)构造函数
 74 @Test
 75 public void test4() throws Exception{
 76 Class clazz=Class.forName("t1.no3.Person");//反射类
 77 Constructor c=clazz.getDeclaredConstructor(int.class,String.class);//反射私有的构造函数
 78 c.setAccessible(true);//强暴执行
 79 Person pp=(Person) c.newInstance(30,"XXXXXXXX");//实例化对象
 80 System.out.println(pp.name);
 81 }
 82 //反射public void say()方法
 83 @Test
 84 public void test5() throws Exception{
 85 Person pp=new Person();
 86 Class clazz=Class.forName("t1.no3.Person");
 87 Method mm=clazz.getMethod("say", null);//反射方法
 88 mm.invoke(pp, null);//执行方法
 89 }
 90 //反射public void say(String name)方法
 91 @Test
 92 public void test6() throws Exception{
 93 Person pp=new Person();
 94 Class clazz=Class.forName("t1.no3.Person");
 95 Method mm=clazz.getMethod("say", String.class);
 96 mm.invoke(pp, "XXXXXX");
 97 }
 98 //反射private void says(String name)方法
 99 @Test
100 public void test7() throws Exception{
101 Person pp=new Person();
102 Class clazz=Class.forName("t1.no3.Person");
103 Method mm=clazz.getDeclaredMethod("say", String.class);
104 mm.setAccessible(true);
105 mm.invoke(pp, "XXXXXX");
106 }
107 //反射public static void sayss()方法
108 @Test
109 public void test8() throws Exception{
110 Person pp=new Person();
111 Class clazz=Class.forName("t1.no3.Person");
112 Method mm=clazz.getMethod("sayss", null);
113 mm.invoke(null, null);
114 }
115 //反射public String name="aaa";
116 @Test
117 public void test9() throws Exception{
118 Person pp=new Person();
119 Class clazz=Class.forName("t1.no3.Person");
120 Field fl=clazz.getField("name");//反射字段名称
121 System.out.println(fl.get(pp));
122 }
123 //反射private int age=31;
124 @Test
125 public void test10() throws Exception{
126 Person pp=new Person();
127 Class clazz=Class.forName("t1.no3.Person");
128 Field fl=clazz.getDeclaredField("age");//反射私有字段名称
129 fl.setAccessible(true);//强制执行
130 System.out.println(fl.get(pp));
131 }
132 //反射private static int pwd=123;
133 @Test
134 public void test11() throws Exception{
135 //Person pp=new Person();
136 Class clazz=Class.forName("t1.no3.Person");
137 Field fl=clazz.getDeclaredField("pwd");
138 fl.setAccessible(true);//强制执行
139 System.out.println(fl.get(null));//static静态的字段,这里可以field.get(null)
140 }
141 }

 

 

 

作者:宁静思远
来源链接:https://www.cnblogs.com/bolg/archive/2013/05/27/3101288.html

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/java/17436.html

分享给朋友:

“java反射实例” 的相关文章

java反射的应用(Hibernate)

java反射的应用(Hibernate)          Hibernate是一个屏蔽了JDBC,实现了ORM的java框架,利用该框架我们可...

java反射详解之反射作用

java反射详解之反射作用

本文转载两篇文章,前一部分很好的解释了Java 反射在开发中的作用机制,后一部分详细给出了反射的运用案例。 第一部分: 反射作用 Java的反射机制是Java特性之一,反射机制是构建框架技术的基础所在。灵活掌握Java反射机制,对大家以后学习框架技术有很大的帮助。...

Java反射笔记

Java反射笔记

Java反射笔记 1:Class类 同Object,String等类一样,Class也是一个类 构造函数只可由JVM调用,不可由开发者调用。 任何一个类均是Class类的实例对象。 任何继承Object的对象均有 g...

Java异常处理之InvocationTargetException(反射异常)

 Java异常处理之InvocationTargetException(反射异常)   InvocationTargetException异常由Method.invoke(obj, args...)方法抛出。当被调用的方法的内部抛出了异常而没有被捕获时,...

Java 反射之Class介绍和三种创建方式

反射的好处(为什么需要反射机制): 通过反射机制可以获取到一个类的完整信息,例如:所有(包含private修饰)属性和方法,包信息等。 换句话说,Class本身表示一个类的本身,通过Class可以完整获取一个类中的完整结构,包含此...

java反射及应用

java反射及应用

1.反射概述 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。 要想解剖一个类,必须先要获取到该类的字节码文...

利用JAVA反射,读取数据库表名,自动生成对应实体类

本代码是利用java反射,读取数据库表自动根据表名生成实体类,数据库采用老牌SQLSERVER 2000,驱动为JTDS,其他数据库可根据情况自定修改。 代码中包含了大部分数据库类型与JAVA类型的转换,少数未包含进去的会在生成代码时打印出来,方面后期查找修改。 本文...

java反射机制及Method.invoke方法(转载)

java反射机制及Method.invoke方法(转载)

1.java反射机制主要提供了以下功能 在运行时判断任意一个对象所属的类 在运行时构造任意一个类的对象 在运行时判断任意一个类所具有的成员变量和方法 在运行时调用任意一个对象的方法 Reflection 是Java被视为动态(或准动态)语言的一个关...

JAVA利用反射映射JSON对象为JavaBean

关于将JSONObject转换为JavaBean,其实在JSONObject中有对于的toBean()方法来处理,还可以根据给定的JsonConfig来处理一些相应的要求,比如过滤指定的属性 [java] vi...

Java反射机制及用途

Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法; 对于任意一个对象,都能够调用它的任意一个方法和属性; class.forName(类名)//获得类      这种动态获取的信息以及...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。