SORU
13 Kasım 2008, PERŞEMBE


Yansıma Java: Nasıl bir Yöntem statik olup olmadığını bilmek?

Çalıştırma bir sınıfın SADECE statik Yöntemlerini keşfetmek istiyorum, bunu nasıl yapabilirim? Ya da, statik nasıl ayırt ve statik olmayan yöntemler.

CEVAP
13 Kasım 2008, PERŞEMBE


Modifier.isStatic(method.getModifiers()) kullanın.

/**
 * Returns the public static methods of a class or interface,
 *   including those declared in super classes and interfaces.
 */
public static List<Method> getStaticMethods(Class<?> clazz) {
    List<Method> methods = new ArrayList<Method>();
    for (Method method : clazz.getMethods()) {
        if (Modifier.isStatic(method.getModifiers())) {
            methods.add(method);
        }
    }
    return Collections.unmodifiableList(methods);
}

Not: Bu yöntem aslında güvenlik açısından tehlikeli. Sınıf."[es] SecurityManager denetler çağırıcı sınıf loader bağlı olarak bypass" (Java Bölüm 6 kodlama yönergeleri güvenli). getMethods

Yasal Uyarı: test Değil, hatta derleyici.

Modifier dikkatli bir şekilde kullanılması gerekir. Flags in temsil türü güvenli değil. Genel bir hata için geçerli değildir bu yansıma nesne türü üzerinde değiştirici bir bayrak test etmektir. Aynı pozisyonda bayrağı bazı diğer bilgileri göstermek için ayarlanmış durumda olabilir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Smith Micro Graphics

    Smith Micro

    15 Mayıs 2008
  • Subscribe!!

    Subscribe!!

    3 EKİM 2009
  • whatever

    whatever

    30 EYLÜL 2005