簡體   English   中英

如何檢查作為Class對象的參數的instanceof?

[英]How to check instanceof on an argument that is a Class object?

我正在嘗試構建一個通用的類加載器。 我需要檢查我對方法參數加載的類,以確定它們是否屬於同一個類。

代碼主要解釋了我正在嘗試做什么。

private static LinkedList<Object> loadObjectsInDirectory(Class class0, File dir) throws ClassNotFoundException {

            LinkedList<Feature> objects = new LinkedList<Object>();

            ClassLoader cl = new GenericClassLoader();

            for(String s : dir.list()) {
                Class class1 = cl.loadClass(s);
                try {
                    Object x = class1.newInstance();
                    if (x instanceof (!!! class0 !!!) ) {
                        objects.add(x);
                    }
                } catch (InstantiationException ex) {
                } catch (IllegalAccessException ex) {
                }

            }

            return objects;

        }

這是如何實現的?

看起來你需要isAssignableFrom方法

if (kelass.isAssignableFrom(klass)) {
   objects.add(x);
}

的JavaDoc

確定此Class對象表示的類或接口是否與指定的Class參數表示的類或接口相同,或者是它們的超類或超接口。 如果是這樣,它返回true; 否則返回false。 如果此Class對象表示基本類型,則如果指定的Class參數恰好是此Class對象,則此方法返回true;否則返回true。 否則返回false。

具體來說,此方法測試是否可以通過標識轉換或擴展引用轉換將指定的Class參數表示的類型轉換為此Class對象表示的類型。 有關詳細信息,請參閱Java語言規范,第5.1.1和5.1.4節。

暫無
暫無

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

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