.Class dosyam olduğunu varsayalım, bu sınıfa dahil edilen tüm yöntemleri alabilir miyim?Bir sınıfın tüm yöntemlerini alabilir miyim?
34
A
cevap
23
bilmek hakkında tüm yöntemler konsolunda bu deyimi kullanabilirsiniz kullanabilirsiniz:
javap java.packagename.classname
Örnek: javap java.lang.StringBuffer
49
Kaynaktan düz: http://java.sun.com/developer/technicalArticles/ALT/Reflection/ Daha sonra, komut satırından herhangi bir şey gerektirmeyen, kendi kendine yeten olmak için değiştirdim. ;-)
import java.lang.reflect.*;
/**
Compile with this:
C:\Documents and Settings\glow\My Documents\j>javac DumpMethods.java
Run like this, and results follow
C:\Documents and Settings\glow\My Documents\j>java DumpMethods
public void DumpMethods.foo()
public int DumpMethods.bar()
public java.lang.String DumpMethods.baz()
public static void DumpMethods.main(java.lang.String[])
*/
public class DumpMethods {
public void foo() { }
public int bar() { return 12; }
public String baz() { return ""; }
public static void main(String args[])
{
try {
Class c = DumpMethods.class;
Method[] m = c.getDeclaredMethods();
for (int i = 0; i < m.length; i++)
System.out.println(m[i].toString());
} catch (Throwable e) {
System.err.println(e);
}
}
}
5
Sen Reflection API
5
public static Method[] getAccessibleMethods(Class clazz) {
List<Method> result = new ArrayList<Method>();
while (clazz != null) {
for (Method method : clazz.getDeclaredMethods()) {
int modifiers = method.getModifiers();
if (Modifier.isPublic(modifiers) || Modifier.isProtected(modifiers)) {
result.add(method);
}
}
clazz = clazz.getSuperclass();
}
return result.toArray(new Method[result.size()]);
}
İlgili konular
- 1. Tüm ek açıklama görünümlerini MKMapView'dan alabilir miyim
- 2. Dizgiden bir PTypeInfo alabilir miyim?
- 3. Bir kullanıcının değiştirdiği tüm dosyaları söyleyebilmem için git alabilir miyim?
- 4. Yönlendiriciyi alabilir miyim?
- 5. Bir kurucuda erişimci yöntemlerini kullanabilir miyim?
- 6. Adres çubuğu değiştirildiğinde bir etkinlik alabilir miyim?
- 7. Objective-C'de statik sınıf yöntemlerini uygulayabilir miyim?
- 8. `FILE *` erişim kipini alabilir miyim?
- 9. Veri türünü C'deki bir değişkenden alabilir miyim?
- 10. Mevcut bir öğeden jQuery nesnesi alabilir miyim
- 11. JQuery ile bir div koordinatlarını alabilir miyim?
- 12. Alanının değerine göre bir numara alabilir miyim?
- 13. Atamadan ziyade bir yetkilendirme isteği alabilir miyim?
- 14. iOS6 IDFA'yı Javascript'ten alabilir miyim?
- 15. Zapier kodunda kitaplık alabilir miyim
- 16. Bir CoffeeScript nesnesinin tüm örnek yöntemlerini edinin
- 17. Kişilerin e-posta adresini iCloud'dan alabilir miyim?
- 18. PyCharm'da bir sınıfın kullanılmayan tüm yöntemleri nasıl bulunur?
- 19. GNU yapımında ikinci önkoşulları alabilir miyim?
- 20. Herhangi bir varlığa ait bir işlevi alabilir miyim?
- 21. PHP'nin DOMDocument ile kardeşleri alabilir miyim?
- 22. scala - Curried yöntemlerini aşırı yükleyebilir miyim?
- 23. Python yöntemlerini özniteliklere atama yoluyla uygulayabilir miyim?
- 24. Azure WebJobs - Async Yöntemlerini kullanabilir miyim?
- 25. Bir XDocument öğesinden kolayca bir TextReader alabilir miyim?
- 26. Bir sınıfın tüm özelliklerine nasıl erişilir?
- 27. Erlang: Şu anda kayıtlı olan atomların bir listesini alabilir miyim?
- 28. iPhone uygulama aboneliğimi temel alabilir miyim?
- 29. Şirketim yoksa AdMob'dan hala para alabilir miyim?
- 30. InnoDB işlemi sırasında bekleyen sorgular alabilir miyim?
Yani, Sınıfı myClass adıyla değiştirdim? –
Bunu java DumpMethods com.mypackage.MyClass' – corsiKa
komut satırından kullanırsınız. Ayrıca "args [0]' "com.mypackage.MyClass" 'ile de değiştirebilirsiniz. Varsayılan paketi kullanıyorsa, sadece "MyClass" 'ı kullanabilirsiniz. – corsiKa