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

  • Fraser Raft

    Fraser Raft

    9 Mart 2010
  • Greater Than Gatsby Photoshop Actions & Lightroom Presets

    Greater Than

    11 ŞUBAT 2013
  • Videojug

    Videojug

    25 EKİM 2006