2014-03-13 36 views
3

我知道有大量關於@NonNull註釋的主題已經被使用,但是其中大多數都是過時的了,因爲Java 8已經存在,這意味着API不再發生變化。@NonNull註釋可以在運行時最終在java 8中使用嗎?

這個問題的事實,Annotations on Types現在的Java的一部分,進一步合理8.

所以我想下面的代碼:

public BaseChecker(final @NonNull File directory, final @NonNull Consumer<File> fileConsumer) { 
    this.directory = directory; 
    this.fileConsumer = fileConsumer; 
} 

我有兩個問題:

  1. 這種語法可能嗎?
  2. @NonNull終於在運行時工作嗎?

隨着運行時間的工作我的意思是:

  • 如果Object value註解,那麼它應該拋出一個NullPointerException當且僅當value == null
  • 此行爲類似於Objects.requireNonNull(value)
+0

你會在運行時期望這樣一個註解嗎? – fge

+0

@fge我希望它會拋出一個'NullPointerException異常'對象'== null',類似'T Objects.requireNonNull(T)'的工作方式。 – skiwi

+1

好的,但堆棧跟蹤元素需要指向某處可執行文件,並且方法聲明不是... – fge

回答

2

是的這種語法是可能的。但不,它不符合你的建議。註釋本身不應該「工作」,它們是可以檢查的裝飾品。

然而,使用AOP來實現這種行爲將是微不足道的。看看AspectJ。

相關問題