Java语法系列之new和newInstance的区别

2020-08-12  本文已影响0人  程序员小白成长记

先说不同:

可以用new Instance但是不能用new的情况

函数作用:根据传入的类型获取类的对象

Test

public class Test {
    public static void main(String[] args) {
        // RealClass realClass = new RealClass();
        AbstractClass abstractClass = getInstance(RealClass.class);
        abstractClass.setId(1);
        System.out.println(abstractClass.getId());
        System.out.println(abstractClass);
    }


    public static<T> T getInstance(Class<? extends T> clazz) {
        T t = null;
        try {
            t = (T) clazz.newInstance();
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
        return t;
    }
}

AbstractClass

public abstract class AbstractClass {

    private int id;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public AbstractClass(){
        System.out.println(this.getClass().getPackage().getName());
        System.out.println(this.getClass());
        System.out.println(AbstractClass.class.getPackage().getName());
    }
}

RealClass

public class RealClass extends AbstractClass {

    public RealClass(){
        super();
    }
}

参考:

newInstance( )和new的区别
Java中newInstance()和new()区别

上一篇 下一篇

猜你喜欢

热点阅读