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

  • fast2hell

    fast2hell

    16 AĞUSTOS 2006
  • Kevin Bruckert

    Kevin Brucke

    30 Aralık 2006
  • manadude21

    manadude21

    11 Mart 2008