2010-03-25 33 views
4

考慮這是從JNI調用,否則不使用私有的方法,生成編譯器警告有關未使用的方法:我可以使用什麼來抑制未使用的函數警告?

private void someMethodCalledOnlyFromJNI() { // WARNING: method is never used 
    // .... 
} 

這是在Java 1.4中的一些遺留代碼 - 等@SuppressWarnings沒有骰子。

你會用什麼來抑制這個編譯器警告?


編輯:顯然,這只是一個警告,它可以很容易被忽略。但是,個人而言,我討厭我的代碼中的警告,就像我不想看到錯誤一樣。 AFAIC - 我的代碼應該有0個警告,這可能是誇張的,但我對此很迂腐。

就像一個例子,有人可能會看到這個函數,不知道它是從JNI中使用的,只是簡單地刪除它。

+0

是這個日食btw? – Bozho 2010-03-25 13:29:18

+0

使用javac編譯時,您會得到相同的警告。 – BalusC 2010-03-25 13:30:12

+0

如果您啓用比默認值更多的詳細警告,我只會收到來自javac的警告我相信 – 2010-03-25 13:36:00

回答

6
  1. 忽略它。這是一個警示,畢竟 - 最佳選擇
  2. 使用protected(並添加註釋的原因) - 愜意
  3. 讓它上面的一個虛擬的方法,使兩個呼叫對方(再次有評論) -
  4. 配置IDE不顯示在所有此警告(在eclipse它是Windows > Preferences > Java > Compiler > Errors/Warnings) - 不可取

由於根據你的更新:有0個警告不是你應該設置的目標。警告的數量取決於設置,因此如果您不是全部具有統一的IDE,則此數字會有所不同。然後你可以添加checkstyle/PMD來報告警告 - 那麼你會有更多的警告。合理的行爲是有一個警告閾值。

如果你不希望任何人刪除此方法,只需添加一個註釋:

// This method is used is used by JNI. (Don't delete) 
+0

重1. - 請參閱我的編輯。恕我直言,這是最糟糕的**選項。 – 2010-03-25 13:30:38

+1

如果你不想讓任何人刪除這個方法,只需添加** PROPER JAVADOC解釋它是什麼以及它是怎麼做的** ** **單元測試斷開時如果它被刪除**。 – Freiheit 2010-03-25 13:45:14

3

要麼忽略該警告,要麼將其聲明爲protected。如果您使用protected並且想要防止子類/覆蓋,那麼也要聲明它爲final

+2

更改方法的可見性以抑制警告只是一個糟糕的想法。 – mgv 2010-03-25 13:27:53

+1

我確實寧願忽略這個警告。但是OP從字面上要求「黑客」。黑客總是討厭:) – BalusC 2010-03-25 13:28:15

+1

只是配置日食忽略那種警告:) – mgv 2010-03-25 13:29:18

1

首先,它只是一個警告,因此它不應該是一個問題給你。

您可以修改代碼以刪除該功能,從而消除該問題。

或者只是從代碼開始/結束時的某處調用它,並忽略任何結果。只要不打算設置任何會影響程序其餘部分的事情,你都會好起來的。

0

你可以把它公開。如果是舊的代碼我相信沒有人會在其他類投訴:)

+0

在這種情況下,我只是使它受到保護,相同的效果:) – 2010-03-25 13:31:42

5

某處:

 if(Boolean.FALSE.booleanValue()) 
    { // prevents warning for unused private method which is used from JNI 
     someMethodCalledOnlyFromJNI(); 
    } 

(不能用簡單的false因爲在死代碼警告結果)。

+0

**對** hack ** :) – 2010-03-25 13:31:11

+7

+1編碼的事情,最終將顯示在thedailywtf.com同時仍然回答OP的問題。 – NotMe 2010-03-25 13:33:45

+1

不錯的@Chris – 2010-03-25 13:34:46

相關問題