2018-06-20学习小结 - 对象的引用与传递7

学习

17.6 反射机制

动态获取信息以及动态调用对象的方法称为Java的反射机制。

反射机制提供功能:在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判断任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法。

范例 17-8 根据对象找到类1

package com.Javastudy2;

import java.util.Date;

/**
 * @author Y.W.
 * @date 2018年6月20日 下午11:05:18
 * @Description TODO 根据对象找到类1
 */
public class P446_17_8 {

    public static void main(String[] args) {
        Date date = new Date();
        Class<?> cls = date.getClass(); // 通过反射机制得到类的包名
        System.out.println(cls);
    }

}

运行结果:

运行结果

取得Class类的实例化对象的三种方法:

方式1:利用Object类的getClass()方法,但要求必须先产生指定类的对象才可以,实际几乎不用。

Date date = new Date();
Class<?> cls = date.getClass();
System.out.println(cls);

方法2:利用“类.class”的形式取得Class类的对象,在Hibernate上使用。

Class<?> cls = java.util.Date.class;
System.out.println(cls);

方式3:利用Class类提供的一个方法完成,在系统框架中使用。

Class<?> cls = Class.forName("java.util.Date");
System.out.println(cls);

范例 17-9 根据对象找到类2

package com.Javastudy2;

/**
 * @author Y.W.
 * @date 2018年6月20日 下午11:29:29
 * @Description TODO 根据对象找到类2
 */
public class P447_17_9 {

    public static void main(String[] args) throws Exception {
        Class<?> cls = Class.forName("com.Javastudy2.Book8");
        Book8 book = (Book8) cls.newInstance(); // 实例化一个对象
        book.setTitle("Java开发");
        book.setPrice(79.8);
        System.out.println(book);
    }

}

class Book8 {
    private String title;
    private double price;

    public void setTitle(String title) {
        this.title = title;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    @Override
    public String toString() {
        return "图书名称:" + this.title + ",价格:" + this.price;
    }
}

运行结果:

运行结果

小结

反射相比确实稍微难一点。


记于2018年6月20日23:54:37
By Yvan

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容