什麼是Java中的receiver
參數? Java 8語言規範談到了this
。爲什麼我們可以使用'this'作爲實例方法參數?
21
A
回答
27
的JLS給出a hint:
無論哪種方式,所述接收器參數存在僅允許表示對象的類型,以在源代碼來表示,這樣的類型可以進行註釋。
這兩種方法是等效的:
class Test {
void m1() { }
void m2(Test this) { }
}
但是後者可以讓你添加註解:
void m2(@MyAnnotation Test this) { }
//where MyAnnotation can be defined like this for example:
@Target(ElementType.TYPE_USE) @interface MyAnnotation {}
+2
另一個示例在http://docs.oracle.com/javase/specs/jls/se8/html/jls-8.html#d5e14278中給出,其中在施工期間沒有外部類型的封閉實例可用 –
7
接收機參數允許來傳遞參數和提取這些參數的附加信息。明確寫入接收者的唯一目的是使註解接收者的類型成爲可能。現在,如果您實現AnnotatedElement接口,則可以調用類的getAnnotation()方法來獲取註釋類型。 欲瞭解更多信息,你可以閱讀this。
相關問題
- 1. Java:使用「this」作爲實例方法的參數/參數名稱?
- 2. 爲什麼對象類方法將類的實例作爲它們的參數
- 3. 爲什麼我們在擴展方法中使用「this」?
- 4. Java:我們可以使用DAO作爲單例實例嗎?
- 5. 爲什麼'this'可以用作Java中的參數?
- 6. 通用實例作爲方法參數
- 7. 我想使用包含實例作爲參數的方法
- 8. 爲什麼我們可以一次實例化多個變量?
- 9. 爲什麼我們可以使用陣列的通用參考
- 10. 爲什麼我們可以調用接口org.w3c.dom.Document的方法?
- 11. 爲什麼你可以使用方法
- 12. 有沒有什麼方法可以使用'unset'作爲方法?
- 13. 爲什麼我們需要在.each()函數中使用$(this)?
- 14. 可以使用ModelAttribute作爲RequestMapping方法的方法參數嗎?
- 15. 可以使用控制器作爲語法訪問`$ scope`和`this`。爲什麼?
- 16. 爲什麼要用-1作爲參數實例化Date?
- 17. 爲什麼我們在html中使用id。我認爲我們可以使用一個類作爲ID
- 18. 爲什麼我們必須在onClick方法中添加'查看'作爲參數,以及它做了什麼?
- 19. 爲什麼我們調用Object.clone()方法?
- 20. 爲什麼我的Static方法隱藏我的實例方法?
- 21. 爲什麼我們必須在foo.call(this,param1,param2)中傳遞「this」參數?
- 22. 爲什麼靜態方法在單例實例中不可用?
- 23. 爲什麼我們可以從作爲值傳遞給方法的參數獲取更新結果?
- 24. 我們可以使用MemberFunction類型作爲模板參數嗎?
- 25. 爲什麼'_.negate'用法在'underscore.js'中使用'this'參數?
- 26. 使用實例屬性作爲參數的方法
- 27. 爲什麼要在python中使用類方法實例方法
- 28. 爲什麼我們必須命名接口方法參數?
- 29. 爲什麼LocalDateTime可以返回實例?
- 30. 爲什麼在include之後可以調用實例方法作爲模塊方法?
剛剛在http://docs.oracle.com/javase/specs/jls/se8/html/jls-8.html#jls-8.4.1中找到它。目前尚不清楚OP的需求比JLS所說的要多,但任何答案都可能僅僅是爲了說明這一點。 –
[來自JLS](http://docs.oracle.com/javase/specs/jls/se8/html/jls-8.html#jls-8.4.1),它是一個正式參數嗎?或者我誤解了它? – Christian
我會說這個問題很清楚。 – olovb