黑马程序员——JAVA学习笔记(十二)

------- android培训java培训、期待与您交流! ----------

十二、反射

反射就是把Java类中的各种成分映射成相应的java类。例如,一个Java类中用一个Class类的对象来表示,一个类中的组成部分:成员变量,方法,构造方法,包等等信息也用一个个的Java类来表示。表示Java类的Class类显然要提供一些列的方法来获得其中的变量,方法,构造方法,修饰符,包等信息,这些信息就是用相应类的实例对象来表示,他们是Field、Method、Contructor、Package等等。


12.1、反射机制

使用java的反射机制,一般需要遵循三步:

1、获得你想操作类的Class对象
2、通过第一步获得的Class对象去取得操作类的方法或是属性名
3、操作第二步取得的方法或是属性

Java运行的时候,某个类无论生成多少个对象,他们都会对应同一个Class对象,它表示正在运行程序中的类和接口。如何取得操作类的Class对象,常用的有三种方式:

1、调用Class的静态方法forName,
2、使用类的.class语法,如:Class cls = String.class;
3、调用对象的getClass方法,如:String str = "abc";Class cls = str .getClass();


使用示例:

/**
 * Java 反射练习。
 */
public class Test {
    public static void main(String[] args) throws Exception {
        DisPlay disPlay = new DisPlay();
        // 获得Class
        Class cls = disPlay.getClass();
        // 通过Class获得DisPlay类的show方法
        Method method = cls.getMethod("show", String.class);
        // 调用show方法
        method.invoke(disPlay, "Wanggc");
    }
}

class DisPlay {
    public void show(String name) {
        System.out.println("Hello :" + name);
    }
}


12.2、Constructor类

Constructor类代表摸个类中的一个构造方法


(1)、得到某个类所有的构造方法

例如:Constructor[] con = Class.forName("java.long.String").getConstructors;


(2)、得到某一个构造方法

例如:Constructor[] con = Class.forName("java.long.String").getConstructor(StringBuffer.class);

注:获得方法时要用到类型


(3)、创建实例对象

例如:

class text
{
	public static void main(Sting[] args)
	{
		Constructor con1 = String.class.getConstructor(StringBuffer.class);
		String str = (String)con.newInstance(new StringBuffer("avs"));
		System.out.print(str.charAt(2));
	}
}

注:调用获得的方法时要用到上面相同类型的实例对象


(4)、Class.newInstance()犯法

例如:String str = (String)Class.forName("java.long.String").newInstance();

注:该方法内部先得到默认的构造方法,然后用该构造方法创建实例对象。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值