我有一個非常簡單的類,並使用Immutables庫。自動生成的代碼定義等於像這樣方法:不變的lib添加@Nullable到equals()方法
@Override
public boolean equals(@Nullable Object another) {
的@Nullable註釋導致以下的FindBugs錯誤:
NP_METHOD_PARAMETER_TIGHTENS_ANNOTATION: Method tightens nullness annotation on parameter
A method should always implement the contract of a method it overrides. Thus, if a method takes a parameter that is marked as @Nullable, you shouldn't override that method in a subclass with a method where that parameter is @Nonnull. Doing so violates the contract that the method should handle a null parameter.
我使用Immutables值-2.5.6.jar
有沒有人看到這個錯誤?
我已經通過添加暫時緩解問題:
@SuppressFBWarnings
到Immutables類。但我不認爲這是一個長期的解決方案。我一定還有其他的東西丟失了。
您是否有生成的代碼的子類,可能會覆蓋'equals'並且不添加註釋? – ThrawnCA
我認爲如果重寫類擴大了它接受的輸入,就像在這種情況下發生的那樣。從@Nullable到'@ Nonnull'肯定會違反合同,而另一種方式只是合同的延伸。在這種情況下FB是錯誤的。 – Henrik