2013-05-27 34 views
1

我是新來的線程在Java中,現在閱讀「實踐中的Java併發」。正如你可能知道我正在嘗試做任何例子,但不能。當我嘗試使用@Immutable註釋IDE(Idea)時,它將其強調爲紅色。 這有什麼可能的原因?無法解析符號'不可變'

回答

4

原因是您的類路徑中沒有正確的jar。

Maven的神器這個罐子是:

<dependency> 
    <groupId>net.jcip</groupId> 
    <artifactId>jcip-annotations</artifactId> 
    <version>1.0</version> 
<dependency> 

如果你沒有這個jar在類路徑中,你沒有註釋。

不過請注意,這是由JSR 305取代還有一個Maven構件爲JSR的實現:

<dependency> 
    <groupId>com.google.code.findbugs</groupId> 
    <artifactId>jsr305</artifactId> 
    <version>2.0.1</version> 
</dependency> 

(邊注:讀的很好的選擇,這是一個必須具備的本書所有Java開發者那裏)

+0

非常感謝,但想法說它有兩個變種。哪些選擇?順便說一句:看看你的答案中的單詞依賴關係 –

+0

兩種變體是什麼? (感謝您注意到錯字) – fge

1

至於與書上的例子工作,所以所有這些註解,像@ThreadSafe,@不可改變/ @線程安全的,他們都只是象徵性的(儘管上述FGE是正確的,你可以使用這些罐子,但從學習的角度來看,只是忽略它們)

所以,簡單地忽略它們。無論任何地方,如果您看到@Immutable,則只需通過代碼實現,就意味着編寫的代碼是IMMUTABLE。

你根本不需要任何jar。只要從你的例子中刪除這些註釋:)