是否有可能創建類似於C中提供的功能並由Antenna提供的預處理器。我們可以使用APT tool來實現此功能嗎?是否有類似主題的文章或鏈接?是否有可能使用Java註釋來實現與預處理器類似的功能
3
A
回答
2
註解並不意味着作爲轉換代碼的工具;他們只是添加元數據到代碼。例如,您不能將註釋用於條件編譯。
由於Sun's tutorial on annotations說:
註釋提供有關程序,是不是程序本身的一部分數據。它們對它們註釋的代碼的操作沒有直接影響。
當Java源代碼被編譯,註釋可以通過編譯器插件叫做註解處理器處理。處理器可以生成信息性消息或創建額外的Java源文件或資源,這些文件或資源又可以被編譯和處理,但處理器不能自己修改註釋的代碼。
因此,註釋處理器插件無法爲您提供C預處理器所具有的所有功能。
2
您可以使用註釋處理框架執行編譯時任務。這不是一個預處理器的強大,因爲你不能做這樣的事情:
@RunOnlyOn(OS.Mac) public void someMethod() { ... }
一些很好的用例標註處理程序是:
- 從註釋類,例如創建映射文件創建一個hibernate映射文件;
- 創建具有特定註釋的類的索引,例如從測試類的源文件夾創建testng xml文件;
- 強制執行通常不可用的編譯時間約束,例如, having a no-arg constructor。
請注意,從Java 6開始,不再需要APT,因爲所有正確聲明的註釋處理器都參與編譯。
相關問題
- 1. 是否有可能使用Java Lambdas來實現類似Groovy的SwingBuilder?
- 2. 是否有可能實現PHP會話處理程序與arangodb
- 3. 是否有可能使用類似top.window.name
- 4. 是否有與C++類似的功能Java庫?
- 5. 是否有可能使用註釋來修補scala final class?
- 6. 如何通過JAVA處理註釋的所有功能反射
- 7. 實現接口的Java類能否自動繼承註釋?
- 8. 是否有可能將Spring MVC與Jersey註釋一起使用?
- 9. 是否有可能爲Google TV構建類似AirPlay的功能?
- 10. 是否有類似於「with」的功能?
- 11. 具有Filer.createClassFile()實現的Java 6註釋處理器
- 12. Java註釋處理:訪問未註釋類的「元素」可能嗎?
- 13. Java是否有純粹功能不可變的Map實現?
- 14. Java註釋處理器,帶註釋的註釋類型
- 15. 預處理功能
- 16. 是否有可能調整註釋ti.map
- 17. 是否有可能在Java中實現類似於Object.clone()的東西?
- 18. 是否有可能使用宏來處理定義的內容?
- 19. 是否有與「applicationWillTerminate()」類似的功能,我可以在AppleWatch上使用?
- 20. SqlConnection是否使用此功能處理
- 21. Java註釋 - 是否有任何助手庫來讀取/處理註釋?
- 22. 是否有可能與Java
- 23. 是否有可能使用Java EE注入實現接口的bean列表
- 24. fortran中是否有類似C中的預處理器指令?
- 25. SASS是否有類似C預處理器的問題?
- 26. Kotlin-Kapt註釋處理器不能與maven配合使用
- 27. @SuppressWarnings來自Java註釋處理器
- 28. 實現類似Google+圈子的功能
- 29. lubridate是否具有與動物園的yearmon功能類似的功能?
- 30. MySQL - 是否有可能使用SQL來實現這一點?
-1因爲不清楚你想要什麼。 – starblue 2009-09-23 08:32:57