我不懂Java,於是我開始學習Scala。什麼是註釋,它們的用途是什麼?什麼是Scala註釋實際上?
2
A
回答
7
註解是附加到類/方法/字段的元數據,框架可以使用它來確定圍繞這些類/方法/字段的必需功能。
常見用途包括:
- 標記方法作爲單元測試方法和相關聯的建立/拆除(例如JUnit和TestNG的)
- 標記爲持久類和字段(例如休眠)
- 標記類和字段作爲JMX的豆
註解是一個Java功能,並作爲斯卡拉等提供以及Java。
5
註解通常可以使信息與定義相關聯,例如,類,方法或變量的定義。註釋可以被編譯器使用或者被程序的其他部分訪問,例如在Java中:
@SuppressWarnings("deprecation")
void useADeprecatedMethod() {
someObj.someDeprecatedMethod();
}
這裏,@SuppressWarnings
註釋告訴編譯器不會發出警告有關useADeprecatedMethod's
使用someDeprecatedMethod
。
Java世界中的其他用途包括向類中添加信息,以瞭解它如何映射到關係數據庫以供像Hibernate這樣的OR映射器使用。
在Scala中,許多Java中的關鍵字或標記接口都是作爲Scala中的註釋實現的。例如@throws
,@serializable
。
下面是一個顯示Scala和Java與註釋幫助一起工作的示例。想象一下,我們將在Scala中定義一個Person
類。當我們在Java中使用Person
時,Java程序員會希望我們擁有setName
和getName
方法,就像Java中的bean約定一樣。
Person類Scala中:這可以通過使用@BeanProperty
註解實現
class Person {
@BeanProperty
var name = "Joe Bloggs"
}
在Java:
public void printPerson(Person p) {
// Scala added the getName method for us
System.out.println(p.getName());
}
3
一個Java註釋的有趣的方面是對他們保留控制。當註釋類型(實現Annotation
接口的Java類)被定義,它的一個屬性是其RetentionPolicy
,之一:
- SOURCE - 註解是由編譯器被丟棄。
- CLASS - 註解將被編譯器記錄在類文件中,但不需要在運行時由VM保留。
- RUNTIME - 註解將被編譯器記錄在類文件中,並在運行時由VM保留,因此可以反射性地讀取它們。
相關問題
- 1. 什麼是Scala中的「(x,y)」,實際返回的是什麼?
- 2. 什麼是JUnit 4中@Test註解實際上做
- 3. 'flex-order'實際上是什麼意思?
- 4. 什麼是set_locale(LC_CTYPE,'C');實際上呢?
- 5. 實際上php session_id是什麼?
- 6. QFE_Richmond實際上是什麼意思?
- 7. 實際上tensorflow會話是什麼?
- 8. mb_internal_encoding()實際上是什麼意思?
- 9. 「框架」實際上是什麼意思?
- 10. InetAddress.isSiteLocalAddress()實際上是什麼意思?
- 11. HardCoded註釋是什麼?
- 12. 什麼是註釋索引?
- 13. @unnspecialized註釋是什麼?
- 14. Java中實際是什麼?
- 15. 什麼是:attribute =>參數實際上是做什麼的?
- 16. 什麼是Scala註釋修改編譯器的消息?
- 17. 什麼是運行時保存的註釋的scala替代
- 18. 有人可以解釋我什麼頭功能實際上呢?
- 19. Symfony緩存是什麼:clear實際上做了什麼?
- 20. 什麼是Page.LoadComplete意味着什麼(實際上)
- 21. 什麼是HTML5 File.slice方法實際上在做什麼?
- 22. 什麼是視圖引擎?它實際上做了什麼?
- 23. 什麼是+ =(o,arg)=>實際實現?
- 24. 這些註釋是什麼? @param,@return,@var,並在實體註釋中設置
- 25. 任何人都可以向我解釋什麼主鍵實際上做什麼?
- 26. Scala註釋列表?
- 27. Scala和@Inject註釋
- 28. 「註冊COM Interop」實際上做了什麼? Q2
- 29. 「註冊COM Interop」實際上做了什麼?
- 30. 依賴注入的實際用例是什麼?
註解是JVM中支持的Java特性,當然,但這並不會使它們自動成爲Scala的一部分。 – 2010-06-20 14:56:30
特別是,由於您可以在Scala中註釋您無法用Java註釋或者甚至不存在Java中的東西,所以我非常肯定Scala Annotations不僅僅是一種簡單的1:1映射到Java註釋或JVM註釋。 – 2010-06-20 15:01:15
我並沒有斷言有一對一的映射。但是我*說* JVM支持Java註釋,並且可以在Scala中使用。以上所有內容都適用於該類別。 – 2010-06-20 16:23:39