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

  • Facebook Developers

    Facebook Dev

    24 ŞUBAT 2009
  • MkElite

    MkElite

    13 NİSAN 2012
  • pjtoohot

    pjtoohot

    15 NİSAN 2008