您当前的位置: 首页 >  Java

ITKEY_

暂无认证

  • 1浏览

    0关注

    732博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Java温故而知新-反射机制

ITKEY_ 发布时间:2021-03-21 11:41:59 ,浏览量:1

认识反射机制 正
package com.yootk.demo;
class Book {
    public void read() {
        System.out.println("认真学习李兴华老师出版的《Java从入门到项目实战》");
    }
}
public class YootkDemo {    // 李兴华编程训练营:yootk.ke.qq.com
    public static void main(String[] args) throws Exception {
        Book book = new Book() ; // 1,首先获取Book类的实例化对象
        book.read(); // 通过实例化对象进行方法调用。
    }
}
package com.yootk.demo;
class Book {
    public void read() {
        System.out.println("认真学习李兴华老师出版的《Java从入门到项目实战》");
    }
}
public class YootkDemo {    // 李兴华编程训练营:yootk.ke.qq.com
    public static void main(String[] args) throws Exception {
        Book book = new Book() ; // 1,首先获取Book类的实例化对象
        System.out.println(book.getClass().getName());  // 对象所属类的完整名称
        System.out.println(book.getClass().getSimpleName()); // 对象所属类的简化名称(不包含包名称)
        System.out.println(book.getClass().getTypeName()); // 获得对象所属类的类型
    }
}

获取操作类型
package com.yootk.demo;
class Book {
    public void read() {
        System.out.println("认真学习李兴华老师出版的《Java从入门到项目实战》");
    }
}
public class YootkDemo {    // 李兴华编程训练营:yootk.ke.qq.com
    public static void main(String[] args) throws Exception {
        Book book = new Book() ;
        printClass(book.getClass());
        printClass(new java.util.Date().getClass());
    }
    public static void printClass(Class clazz) {
        System.out.println("【当前操作的类型】" + clazz.getName());
    }
}
Class类与对象实例化

范例一

package com.yootk.demo;
interface IBook {}
public class YootkDemo {    // 李兴华编程训练营:yootk.ke.qq.com
    public static void main(String[] args) throws Exception {
        Class clazzA = IBook.class ; //  属于Java的原生语法支持
        Class clazzB = java.util.Date.class ; //  属于Java的原生语法支持
        System.out.println(clazzA);
        System.out.println(clazzB);
    }
}

范例二

package com.yootk.demo;

import java.util.Date;

public class YootkDemo {    // 李兴华编程训练营:yootk.ke.qq.com
    public static void main(String[] args) throws Exception {
        Class clazz = Date.class ; //  属于Java的原生语法支持
        System.out.println(clazz);
    }
}

范例三:

package com.yootk.demo;

public class YootkDemo {    // 李兴华编程训练营:yootk.ke.qq.com
    public static void main(String[] args) throws Exception {
        Class clazz = Class.forName("java.util.Date") ; // 根据类名称实现信息加载
        System.out.println(clazz);
    }
}
反射机制与对象实例化
1、

package com.yootk.demo;
class Book {
    public Book() {
        System.out.println("【Book】实例化新的Book类对象");
    }
}
public class YootkDemo {    // 李兴华编程训练营:yootk.ke.qq.com
    public static void main(String[] args) throws Exception {
        Book book = new Book() ;
    }
}


2、
package com.yootk.demo;
class Book {
    public Book() {
        System.out.println("【Book】实例化新的Book类对象");
    }
}
public class YootkDemo {    // 李兴华编程训练营:yootk.ke.qq.com
    public static void main(String[] args) throws Exception {
        Class bookClazz = Class.forName("com.yootk.demo.Book") ; // 实例化Book类的对象
        bookClazz.newInstance() ; // 在JDK 1.8的时候依然可以正常使用
    }
}


3、
package com.yootk.demo;
class Book {
    public Book() {
        System.out.println("【Book】实例化新的Book类对象");
    }
}
public class YootkDemo {    // 李兴华编程训练营:yootk.ke.qq.com
    public static void main(String[] args) throws Exception {
        Class bookClazz = Class.forName("com.yootk.demo.Book") ; // 实例化Book类的对象
        bookClazz.getDeclaredConstructor().newInstance() ;
    }
}


4、
package com.yootk.demo;
class Book {
    public void read() {
        System.out.println("认真学习李兴华老师出版的《Java从入门到项目实战》");
    }
}
public class YootkDemo {    // 李兴华编程训练营:yootk.ke.qq.com
    public static void main(String[] args) throws Exception {
        Class bookClazz = Class.forName("com.yootk.demo.Book") ; // 实例化Book类的对象
        // newInstance()返回的是一个Object类型,那么就必须进行对象的强制向下转型
        Book book = (Book) bookClazz.getDeclaredConstructor().newInstance() ;
        book.read();
    }
}


5、
package com.yootk.demo;

import java.util.Date;

public class YootkDemo {    // 李兴华编程训练营:yootk.ke.qq.com
    public static void main(String[] args) throws Exception {
        Class bookClazz = Class.forName("java.util.Date") ; // 实例化Book类的对象
        // 如果强制转型了,那么就必须进行开发包的完整导入
        Date date = (Date) bookClazz.getDeclaredConstructor().newInstance() ;
        System.out.println(date.getTime());
    }
}

6、
package com.yootk.demo;
interface IBook {   // 接口
    public void read() ;
}
class MathBook implements IBook {
    @Override
    public void read() {
        System.out.println("【MathBook】认真学习大学数学课程(线性代数、概率统计、离散数学)。");
    }
}
class ProgramBook implements IBook {
    @Override
    public void read() {
        System.out.println("【ProgramBook】认真学习李兴华老师出版的《Java从入门到项目实战》。");
    }
}
class Factory {
    private Factory() {}
    public static IBook getInstance(String className) {
        if ("math".equalsIgnoreCase(className)) {
            return new MathBook() ;
        } else if ("program".equalsIgnoreCase(className)) {
            return new ProgramBook() ;
        } else {
            return null ;
        }
    }
}
public class YootkDemo {    // 李兴华编程训练营:yootk.ke.qq.com
    public static void main(String[] args) throws Exception {
        IBook book = Factory.getInstance("program") ;
        book.read();
    }
}

7、
package com.yootk.demo;
interface IBook {   // 接口
    public void read() ;
}
class MathBook implements IBook {
    @Override
    public void read() {
        System.out.println("【MathBook】认真学习大学数学课程(线性代数、概率统计、离散数学)。");
    }
}
class ProgramBook implements IBook {
    @Override
    public void read() {
        System.out.println("【ProgramBook】认真学习李兴华老师出版的《Java从入门到项目实战》。");
    }
}
class Factory {
    private Factory() {}
    public static IBook getInstance(String className) { // 必须传递类的完整名称
        try { // 直接实例化对象
            Object obj = Class.forName(className).getDeclaredConstructor().newInstance();
            if (obj instanceof IBook) { // 为了防止出现ClassCastException
                return (IBook) obj ; // 强制性的向下转型
            }
            return null ;
        } catch (Exception e) {
            return null ;
        }
    }
}
public class YootkDemo {    // 李兴华编程训练营:yootk.ke.qq.com
    public static void main(String[] args) throws Exception {
        IBook book = Factory.getInstance("com.yootk.demo.ProgramBook") ;
        book.read();
    }
}

8、
package com.yootk.demo;
class Singleton {   // 单例设计类
    private static Singleton instance ; // 不进行对象实例化
    private Singleton() { // 构造方法私有化
        System.out.println("【" + Thread.currentThread().getName() + "】实例化Singleton类的对象。");
    }
    public String toString() {
        return "【VIP】李兴华编程训练营:yootk.ke.qq.com" ;
    }
    public static Singleton getInstance() { // 获取Singleton类实例化对象
        if (instance == null) { // 现在还没有实例化
            instance = new Singleton() ; // 对象实例化
        }
        return instance ; // 获取对象实例
    }
}
public class YootkDemo {    // 李兴华编程训练营:yootk.ke.qq.com
    public static void main(String[] args) throws Exception {
        for (int x = 0 ;  x             
关注
打赏
1665243900
查看更多评论
0.0834s