2011-03-19 46 views
4

我正在尋找一些類似於Python的getattr,hasattr,callable等Java中的元編程功能。如果沒有,是否有任何良好的外部庫?在java中是否有getattr,callable和其他元編程功能?

+1

Java有Reflection,但它不像Python對元編程的支持一樣可用。像Java和C#這樣的語言(尤其是前者,後者在較小的程度上)是在程序員不應該過於「聰明」的前提下設計的。 – pyon 2011-03-19 18:39:22

回答

1

也是JavaBean規範在這方面的dabbles。

看到java.beans.BeanInfo中

還有一些庫,如公地的BeanUtils是建立在反思,試圖更多元的處理,等等。

1

一些用於元編程的最佳「庫」採用在JVM上運行的替代語言的形式;例如,Groovy語言是一種稍微簡化的Java,具有更好的元編程支持(以及其他功能)。

0

除了反思之外,您可能對AOP感興趣(例如,通過AspectJ),這允許對各種Java執行序列進行方法調用,轉換,攔截等的預處理和/或後處理。

無法攔截對不存在的方法的調用,因爲無法編譯此類代碼。