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

  • Adam Khoury

    Adam Khoury

    23 Ocak 2008
  • PlayStation

    PlayStation

    16 Aralık 2005
  • The Dubstep FX

    The Dubstep

    5 Mart 2011