2010-02-02 27 views
5

var mı herhangi bir yerleşik java6 yöntemi (belki lang veya yansıma?) Gerçekleştirmek için: türü içeren bir dizi nesne dizisi alır ve dönerNesne [] Class [] 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; 
} 

her elemanın

+0

Bildiğim kadarıyla, Java'da bunun en iyi yolu budur. – jjnguy

+0

'' (..) 'döngüsü için okunabilirlik değerini artıran * için (Object o: object)' ile değiştirilebilir (ancak sonra dizini ayrı ayrı saymanız gerekir, hrm :)) *. Ama evet, bu temelde Java'da bunu yapmanın bir yoludur. – Esko

cevap

5

Hayır, JavaSE'de bunun için yerleşik bir tesis yok.

Yükün büyük bir kısmı, kesinlikle ünite tarafından test edilebilir ve sadece birkaç satırdır.

Eğer gerçekten kendinizi yazmayın şey istediğimizde bunu sizin için yapacak çeşitli 3. taraf kitaplıkları vardır (örneğin Apache Commons Lang en ClassUtils, CGLIB en ReflectUtils), zaten onlardan biri varsa öyleyse, onları kullanabilir.

+0

ClassUtils, ObjectUtils Ben değil :) – Bozho

+0

utils, utils, her yerde .... – skaffman

+1

* ClassUtils.toClass * kullanarak bitti. Benim için daha az bir yöntem. Teşekkürler! – rcampbell

1

Bu tür bir şey için lambdaj'un özelliklere sahip olduğunu düşünüyorum.

1

Hayır, bunu yapmanın daha iyi bir yolu yoktur. Ancak, bunun çok önemli olduğunu düşünmüyorum. Kodunuzu çoktan tekrar kullanılabilir bir yöntem olarak paketlediniz. Birkaç farklı sınıftan kullanmanız gerekiyorsa, bazı yardımcı sınıflarda sadece genel bir statik yönteme dönüşün.

Bunu yaptıktan sonra, tüm pratik amaçlar için, bir nesne dizisini bir dizi sınıfa dönüştürmek için uygun bir yol var. Diğer bir deyişle, belirli bir hizmeti tekrar kullanılabilir bir şekilde uyguladıysanız, araç takımınızı etkili bir şekilde genişletmiş olursunuz. Bu özel servisin "standart" JRE'nin bir parçası olmadığı önemli değildir.

İlgili konular