簡體   English   中英

如何動態創建實現某些接口的新類並實例化它?

[英]How to dynamically create new class implementing some interface and instantiate it?

是否可以在Java運行時編寫新類?

這是什么意思? 恢復體力? 編譯器API?

我可以

package tests;

public class TryReflection02 {

    interface A {

    }

    public static void main(String[] args) {

        Object o = new A() {};

        System.out.println( o.toString() );

        o = A.class.newInstance() // exception

    }

}

我可以做同樣具有A.class值的東西嗎?

不,你不能。 A是接口,並且只能實例化類。

可以做的是使用一個庫/助手使用一些掛羊頭賣狗肉,以創建一個實現接口和實例化一個類。 JDK的Proxy類包含用於執行此操作的靜態方法。 對於與測試相關的用例,還有一些可以定制的工具可以做到這一點:例如, 嘲笑

這些工具的作用恰恰是您在該問題的標題中所暗示的內容:它們不是實例化接口,而是生成實現該接口的新類,然后實例化該類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM