Class 反射初步

获得类

 

package org.lxh.demo15.getclassdemo ;

class X{

};

public class GetClassDemo02{

public static void main(String args[]){

Class<?> c1 = null ; // 指定泛型

Class<?> c2 = null ; // 指定泛型

Class<?> c3 = null ; // 指定泛型

try{

// 以下的操作形式是在开发中最常用的一种形式

c1 = Class.forName("org.lxh.demo15.getclassdemo.X") ;

}catch(ClassNotFoundException e){

e.printStackTrace() ;

}

c2 = new X().getClass() ; // 通过Object类中的方法实例化

c3 = X.class ; // 通过类.class实例化

System.out.println("类名称:" + c1.getName())  ; // 得到类的名称

System.out.println("类名称:" + c2.getName())  ; // 得到类的名称

System.out.println("类名称:" + c3.getName())  ; // 得到类的名称

}

};

 

 

2

实例化

 

package org.lxh.demo15.instancedemo ;

class Person{

private String name ; // name属性

private int age ; // age属性

public void setName(String name){

this.name = name ;

}

public void setAge(int age){

this.age = age ;

}

public String getName(){

return this.name ;

}

public int getAge(){

return this.age ;

}

public String toString(){ // 覆写toString()方法

return "姓名:" + this.name + ",年龄:" + this.age  ;

}

};

public class InstanceDemo01{

public static void main(String args[]){

Class<?> c = null ; // 声明Class对象

try{

c = Class.forName("org.lxh.demo15.instancedemo.Person") ;

}catch(ClassNotFoundException e){

e.printStackTrace() ;

}

Person per = null ; // 声明Person对象

try{

per = (Person)c.newInstance() ; // 实例化对象

}catch(Exception e){

e.printStackTrace() ;

}

per.setName("李兴华") ; // 设置姓名

per.setAge(30) ; // 设置年龄

System.out.println(per) ; // 内容输出,调用toString()

}

};

 

 

必须有无参构造方法

 

 

3

有参构造方法

 

package org.lxh.demo15.instancedemo ;

import java.lang.reflect.Constructor ; // 导入反射机制包

class Person{

private String name ; // name属性

private int age ; // age属性

public Person(String name,int age){

this.setName(name) ;

this.setAge(age);

}

public void setName(String name){

this.name = name ;

}

public void setAge(int age){

this.age = age ;

}

public String getName(){

return this.name ;

}

public int getAge(){

return this.age ;

}

public String toString(){ // 覆写toString()方法

return "姓名:" + this.name + ",年龄:" + this.age  ;

}

};

public class InstanceDemo03{

public static void main(String args[]){

Class<?> c = null ; // 声明Class对象

try{

c = Class.forName("org.lxh.demo15.instancedemo.Person") ;

}catch(ClassNotFoundException e){

e.printStackTrace() ;

}

Person per = null ; // 声明Person对象

Constructor<?> cons[] = null ;

cons = c.getConstructors() ;

try{

per = (Person)cons[0].newInstance("李兴华",30) ; // 实例化对象

}catch(Exception e){

e.printStackTrace() ;

}

System.out.println(per) ; // 内容输出,调用toString()

}

};

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值