反射类的构造函数

 1 import java.lang.reflect.Constructor;
 2 import java.lang.reflect.InvocationTargetException;
 3 import java.util.ArrayList;
 4 import java.util.List;
 5
 6 import org.junit.Test;
 7
 8 public class Demo {
 9
10     /**
11      * 反射类的构造函数,创建类的对象
12      *
13      * @param args
14      * @throws ClassNotFoundException
15      * @throws Exception
16      * @throws IllegalAccessException
17      * @throws InstantiationException
18      * @throws IllegalArgumentException
19      */
20
21     // 反射构造函数:public Person()
22     @Test
23     public void test1() throws Exception {
24
25         Class clazz = Class.forName("Person");
26
27         Constructor c = clazz.getConstructor(null);
28
29         Person p = (Person) c.newInstance(null);
30
31         System.out.println(p.name);
32
33     }
34
35     // 反射构造函数:public Person(String name);
36     @Test
37     public void test2() throws Exception {
38         Class clazz = Class.forName("Person");
39
40         Constructor c = clazz.getConstructor(String.class);
41
42         Person p = (Person) c.newInstance("xxxxx");
43
44         System.out.println(p.name);
45
46     }
47
48     //public Person(String name,int password){}
49     @Test
50     public void test3() throws Exception {
51         Class clazz = Class.forName("Person");
52
53         Constructor c = clazz.getConstructor(String.class,int.class);
54
55         Person p = (Person) c.newInstance("xxxxx",12);
56
57         System.out.println(p.name);
58
59     }
60
61     //public Person(List list){}
62     @Test
63     public void test4() throws Exception {
64         Class clazz = Class.forName("Person");
65
66         Constructor c = clazz.getDeclaredConstructor(List.class);
67
68         c.setAccessible(true);//暴力反射,设置可以访问私有
69
70         Person p = (Person) c.newInstance(new ArrayList());
71
72         System.out.println(p.name);
73
74     }
75
76     //创建对象的另一种方法
77     @Test
78     public void test5() throws Exception {
79         Class clazz = Class.forName("Person");
80
81         Person p = (Person) clazz.newInstance();
82
83         System.out.println(p.name);
84
85     }
86 }

 1 import java.util.List;
 2
 3
 4 public class Person {
 5
 6     public String name="hellowrold";
 7
 8     public Person(){
 9         System.out.println("person");
10     }
11
12     public Person(String name){
13         System.out.println("person :"+name);
14     }
15
16     public Person(String name,int password){
17         System.out.println("person:"+name+password);
18     }
19
20     private Person(List list){
21         System.out.println("list");
22     }
23 }

反射类的构造函数,布布扣,bubuko.com

时间: 2024-12-29 11:18:57

反射类的构造函数的相关文章

反这类的构造方法(写框架时才会用到反射类)

package reflet; import java.util.List; public class person { public String name="hahaah"; public person()//无参构造函数 { System.out.println("person"); } public person(String name)//有参构造函数 { System.out.println(name); } public person(String n

C# 通过反射类动态调用DLL方法

网上看了很多关于反射的思路和方法,发现这个还算不错 //使用反射方: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Reflection; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { //声明一个反射类对象 Assembly a

php反射类的使用及Laravel对反射的使用介绍

PHP的反射类与实例化对象作用相反,实例化是调用封装类中的方法.成员,而反射类则是拆封类中的所有方法.成员变量,并包括私有方法等.就如"解刨"一样,我们可以调用任何关键字修饰的方法.成员.当然在正常业务中是建议不使用,比较反射类已经摒弃了封装的概念. 本章讲解反射类的使用及Laravel对反射的使用. 反射 反射类是PHP内部类,无需加载即可使用,你可以通过实例化 ReflectionClass 类去使用它. 方法 这里列举下PHP反射类常用的方法 方法名 注释 ReflectionC

java 反射类的理解与应用

本文主要解析的类是: ClassLodaer,Class,Field,Method,Constructor. 本文的目标很简单,只是对这些常用的反射类进行简单解释.对这些类中常用方法进行介绍. JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法:这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制.Java反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类:在运行时构造任意一个类的对象:在

【C++学习之路】派生类的构造函数(二)

二.有内嵌对象的派生类 1.一般来说,我们会这样定义构造函数 student( int i, string nam, int pid, string pnam, int sid) : person( i, nam),parent(pid,pnam){ stuid = sid; } person是基类的构造函数,parent是该派生类内嵌的person子对象   2.具体例子 1 #include <iostream> 2 using namespace std; 3 class A 4 { 5

ThinkPHP中的__initialize()和类的构造函数__construct()

ThinkPHP中的__initialize()和类的构造函数__construct()网上有很多关于__initialize()的说法和用法,总感觉不对头,所以自己测试了一下.将结果和大家分享.不对请更正.首先,我要说的是1.__initialize()不是php类中的函数,php类的构造函数只有__construct().2.类的初始化:子类如果有自己的构造函数(__construct()),则调用自己的进行初始化,如果没有,则调用父类的构造函数进行自己的初始化.3.当子类和父类都有__co

对C++中派生类的构造函数和析构函数的认识

一:构造函数 形式:派生类名::派生类名:基类名1(参数1),基类名2(参数2),--基类名n(参数n),数据成员1(参数1),数据成员2(参数2),--数据成员n(参数n){ 各种操作的说明 } 执行过程:先执行基类的构造函数,再进行数据成员的赋值,最后执行函数体. 其中基类名和数据成员的顺序是由在派生类的定义中声明的顺序决定执行的顺序的,因此它们的顺序是任意的,但为了可读性,还是最好按顺序写. 如果基类只有默认构造函数,则基类名和参数表可以不用写出来. 二:复制构造函数 派生类的构造函数的形

反射类的方法(其中main方法比较特殊)

package reflet; import java.util.List; public class person { public String name="hahaah"; public void aa1()//方法 { System.out.println("aa1"); } public void aa1(String name,int password) { System.out.println(name+":"+password);

C++构造函数 &amp; 拷贝构造函数 &amp; 派生类的构造函数 &amp; 虚继承的构造函数

构造函数 ,是一种特殊的方法 .主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中 .特别的一个类可以有多个构造函数 ,可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载.(摘自百度百科构造函数). 一.最基本的构造函数 1 class Base 2 { 3 public: 4 Base(int var) : m_Var(var) 5 { 6 } 7 private: 8 int m_Var; 9 }; 以上构造函数的执行过程: