2010-02-02 60 views
5

是否有任何內置的Java6方法(也許在郎或反射?),用於執行:對象[]到類[]中的Java

private Class[] getTypes(final Object[] objects) { 
    final Class[] types = new Class[objects.length]; 
    for (int i = 0; i < objects.length; i++) { 
     types[i] = objects[i].getClass(); 
    } 
    return types; 
} 

這需要對象數組,並返回包含類型的數組每個元素?

+0

據我所知,這是在Java中使用它的最好方法。 – jjnguy 2010-02-02 08:30:54

+0

用於(..)'循環的'可以替換爲'for(Object o:objects)',它可以提高可讀性*(但是你必須單獨計算索引,hrm :))*。但是,這基本上是用Java來完成的。 – Esko 2010-02-02 08:35:11

回答

5

不,在JavaSE中沒有內置工具。

沒有太多的負擔,當然,它很容易單元測試,只有幾行。

如果你真的想要你自己寫的東西,有各種各樣的第三方庫會爲你做(例如Apache Commons Lang的ClassUtils,CGLIB的ReflectUtils),所以如果你已經有了其中的一個,你可以使用它們。

+0

ClassUtils,而不是ObjectUtils我認爲:) – Bozho 2010-02-02 08:38:21

+0

utils,utils,無處不在.... – skaffman 2010-02-02 08:39:07

+1

我結束了使用* ClassUtils.toClass *。少一個方法讓我保持。謝謝! – rcampbell 2010-02-02 08:53:32

1

不,沒有更好的方法來做到這一點。 但是,我認爲這不重要。您已經將代碼打包爲可重用的方法。如果您需要從幾個不同的類中使用它,則只需在某個實用程序類中轉換爲公共靜態方法即可。

一旦你完成了這一切,那麼爲了所有的實際目的,你有一個方便的方法將ab數組轉換爲一個類的數組。換句話說,如果你已經以可重用的方式實現了某種服務,那麼你就有效地擴展了你的工具包。這個特定的服務不是「標準」JRE的一部分並不重要。