天天看點

如何使用反射擷取類對象

如何使用反射擷取類對象

1.擷取Class對象

City是一個普通的pojo。以下暫時如何使用反射擷取類對象。

public class TestClass {

    public static void main(String[] args) {
        City city = new City();
        Class c1 = City.class;
        Class c2 = city.getClass();
        Class c3 = null;
        try {
            c3 = Class.forName("com.example.demo.entity.City");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        System.out.println(c1);
        System.out.println(c2);
        System.out.println(c3);

    }      

結果:

class com.example.demo.entity.City

2.Class.forName()、Class.forName().newInstance() 、New 三者差別

new:執行個體化對象,生成一個object類型,并在堆中開辟一塊記憶體,并将object放入。

Class.forName():獲得一個已加載過的class對象。(new可以沒有加載也可以已經加載了)

Class.forName().newInstance() :等同于new,但是new可以根據參數調用其他的構造函數,但是newInstance()隻能調用無參的構造方法。同時也是反射的缺點,效率都比較低

繼續閱讀