IntelliJを「コードの検査」に使用しましたが、その結果の1つは次のとおりです。
問題の概要packageパッケージローカルにすることができます(18(public class HeartBeat)
)
それはどういう意味ですか、どうすれば修正できますか?
クラス全体は次のようになります。
package com.xxxxxxxxxxx.app.xxxx;
public class HeartBeat
{
private static final Logger LOG = LoggerFactory.getLogger( HeartBeat.class );
private final File heartBeatFile;
public HeartBeat( File heartBeatFile )
{
this.heartBeatFile = heartBeatFile;
}
public void beat()
{
try
{
FileUtils.writeStringToFile( heartBeatFile, String.valueOf( System.currentTimeMillis() ) );
}
catch( IOException e )
{
LOG.error( "Error while writing heart beat log", e );
}
}
}
IDEAはpackage-private可視性を参照しています。
クラスは修飾子
public
を使用して宣言できます。この場合、そのクラスはどこでもすべてのクラスに表示されます。クラスに修飾子がない場合(デフォルト、package-privateとも呼ばれる)、そのクラス内でのみ表示されます
詳細については、「 クラスのメンバーへのアクセスの制御 」を参照してください。
この問題を解決するには、クラスからpublic
キーワードを削除するか(クラスがパッケージの外部で使用されることを意図していない場合)、別のパッケージのクラスを使用します。
この警告を抑制したい場合:
編集:最新のIDEAリリースステップ4では、これは「...のパッケージプライベートの可視性レベルを提案する」に変更されたように見え、さまざまな条件のいくつかのオプションが含まれています。
これらの各lint警告は、次のコードでケースバイケースで抑制できます。
@SuppressWarnings("WeakerAccess")
HeartBeatクラスは、パッケージcom.xxxxxxxxxxx.app.xxxx以外では使用されません。この場合、アクセスをより正確にするために、クラスを「保護」または「プライベート」に宣言できます。
このパッケージの外部でこのクラスを使用する予定がない場合は、クラス宣言を変更する必要があります。このパッケージ外でこのクラスを使用する場合は、そのままにしておくと警告が消えます。
例えば。:
protected class HeartBeat {
...
}