import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import com.student.admin.Account;
import com.student.admin.Person;
public class ReflectDemo {
//通过一个对象获取一个完整的包名和类名
public static void main(String[] args) {
Account account=new Account();
Class c=account.getClass();//获取完整的类名
String name=c.getName();
System.out.println(name);
System.out.println(c);
System.out.println("------------------");
instance();
Instance1();
Instance2();
}
//所有类对象都是Class的实例
//Class实例化对象
public static void instance(){
Class<?>demo1=null;
Class<?>demo2=null;
Class<?>demo3=null;
//实例化对象
try {
demo1=Class.forName("com.student.admin.Account");
demo2=new Account().getClass();
demo3=Account.class;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("demo1:"+demo1.getName());
System.out.println("demo2:"+demo2.getName());
System.out.println("demo3:"+demo3.getName());
}
//实例化其他类对象
public static void Instance1(){
Class<?> demo=null;
try {
demo=Class.forName("com.student.admin.Person");
Person per=null;
try {
System.out.println(demo.getName());
per=(Person) demo.newInstance();
// System.out.println((Person)demo.newInstance());
per.setAge(18);
per.setName("xie");
System.out.println(per);
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//通过Class调用其他类中的构造函数 (也可以通过这种方式通过Class创建其他类的对象)
public static void Instance2(){
Class<?> demo=null;
try{
demo=Class.forName("com.student.admin.Person");
System.out.println(demo);
}catch (Exception e) {
e.printStackTrace();
}
Person per1=null;
Person per2=null;
Person per3=null;
Person per4=null;
//取得全部的构造函数
Constructor<?> cons[]=demo.getDeclaredConstructors();
try{
/*per1=(Person)cons[0].newInstance();
per2=(Person)cons[1].newInstance("Rollen");
*/
per3=(Person)cons[2].newInstance("xe",19);
//判断哪一个是参数类型
// per4=(Person)cons[3].newInstance("xue",18);
// Class[] cc1 = cons[0].getParameterTypes();
// System.out.println(cc1.length);
// Class[] cc2 = cons[1].getParameterTypes();
// System.out.println(cc2.length);
// Class[] cc3 = cons[2].getParameterTypes();
// System.out.println(cc3.length);
// Class[] cc4 = cons[3].getParameterTypes();
// System.out.println(cc4.length);
}catch(Exception e){
e.printStackTrace();
}
// System.out.println(per1);
// System.out.println(per2);
// System.out.println(per3);
System.out.println(per3);
}
}
import java.lang.reflect.InvocationTargetException;
import com.student.admin.Account;
import com.student.admin.Person;
public class ReflectDemo {
//通过一个对象获取一个完整的包名和类名
public static void main(String[] args) {
Account account=new Account();
Class c=account.getClass();//获取完整的类名
String name=c.getName();
System.out.println(name);
System.out.println(c);
System.out.println("------------------");
instance();
Instance1();
Instance2();
}
//所有类对象都是Class的实例
//Class实例化对象
public static void instance(){
Class<?>demo1=null;
Class<?>demo2=null;
Class<?>demo3=null;
//实例化对象
try {
demo1=Class.forName("com.student.admin.Account");
demo2=new Account().getClass();
demo3=Account.class;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("demo1:"+demo1.getName());
System.out.println("demo2:"+demo2.getName());
System.out.println("demo3:"+demo3.getName());
}
//实例化其他类对象
public static void Instance1(){
Class<?> demo=null;
try {
demo=Class.forName("com.student.admin.Person");
Person per=null;
try {
System.out.println(demo.getName());
per=(Person) demo.newInstance();
// System.out.println((Person)demo.newInstance());
per.setAge(18);
per.setName("xie");
System.out.println(per);
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//通过Class调用其他类中的构造函数 (也可以通过这种方式通过Class创建其他类的对象)
public static void Instance2(){
Class<?> demo=null;
try{
demo=Class.forName("com.student.admin.Person");
System.out.println(demo);
}catch (Exception e) {
e.printStackTrace();
}
Person per1=null;
Person per2=null;
Person per3=null;
Person per4=null;
//取得全部的构造函数
Constructor<?> cons[]=demo.getDeclaredConstructors();
try{
/*per1=(Person)cons[0].newInstance();
per2=(Person)cons[1].newInstance("Rollen");
*/
per3=(Person)cons[2].newInstance("xe",19);
//判断哪一个是参数类型
// per4=(Person)cons[3].newInstance("xue",18);
// Class[] cc1 = cons[0].getParameterTypes();
// System.out.println(cc1.length);
// Class[] cc2 = cons[1].getParameterTypes();
// System.out.println(cc2.length);
// Class[] cc3 = cons[2].getParameterTypes();
// System.out.println(cc3.length);
// Class[] cc4 = cons[3].getParameterTypes();
// System.out.println(cc4.length);
}catch(Exception e){
e.printStackTrace();
}
// System.out.println(per1);
// System.out.println(per2);
// System.out.println(per3);
System.out.println(per3);
}
}