"Can be package local" 是什么意思? (想法检查)
What does "Can be package local" mean? (IDEA Inspection)
我在 "Inspect Code" 中使用了 IntelliJ,其结果之一是:
问题概要 可以打包到本地(第 18 行(public class HeartBeat)
)
这是什么意思,我该如何解决?
整个class是这样的:
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 );
}
}
}
您的 HeartBeat class 未在包 com.xxxxxxxxxxx.app.xxxx 之外的任何地方使用。在这种情况下,您可以声明 class 'protected' 或 'private' 以更精确地访问。
如果您不打算在此包之外使用此 class,则应更改 class 声明。如果你打算在这个包之外使用这个class,离开它,警告就会消失。
例如:
protected class HeartBeat {
...
}
IDEA 指的是 package-private 可见性。
A class may be declared with the modifier public
, in which case that class is visible to all classes everywhere. If a class has no modifier (the default, also known as package-private), it is visible only within its own package
有关详细信息,请参阅 Controlling Access to Members of a Class。
您可以通过从 class 中删除 public
关键字(如果 class 不打算在包外使用)或使用 class 来自不同的包。
如果你想抑制这个警告:
- 转到首选项 -> 编辑器 -> 检查
- 转到Java -> 声明冗余
- Select "Declaration access can be weaker"
- 取消选中 "Suggest package local visibility..." 复选框
对
编辑:在最新的 IDEA 版本第 4 步中,这看起来已更改为 "Suggest package-private visibility level for ..." 并包括针对各种条件的多个选项
来自 Android 应用程序后台,您还需要考虑有时这些警告是多余的。所以对于 debug build
类,它可以是 package local
但对于 release build
它可能在包外使用。
我已将其禁用,@ashario 的回答对找到如何禁用它很有帮助。
这些 lint 警告中的每一个都可以使用以下代码根据具体情况加以抑制。
@SuppressWarnings("WeakerAccess")
我在 "Inspect Code" 中使用了 IntelliJ,其结果之一是:
问题概要 可以打包到本地(第 18 行(public class HeartBeat)
)
这是什么意思,我该如何解决?
整个class是这样的:
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 );
}
}
}
您的 HeartBeat class 未在包 com.xxxxxxxxxxx.app.xxxx 之外的任何地方使用。在这种情况下,您可以声明 class 'protected' 或 'private' 以更精确地访问。
如果您不打算在此包之外使用此 class,则应更改 class 声明。如果你打算在这个包之外使用这个class,离开它,警告就会消失。
例如:
protected class HeartBeat {
...
}
IDEA 指的是 package-private 可见性。
A class may be declared with the modifier
public
, in which case that class is visible to all classes everywhere. If a class has no modifier (the default, also known as package-private), it is visible only within its own package
有关详细信息,请参阅 Controlling Access to Members of a Class。
您可以通过从 class 中删除 public
关键字(如果 class 不打算在包外使用)或使用 class 来自不同的包。
如果你想抑制这个警告:
- 转到首选项 -> 编辑器 -> 检查
- 转到Java -> 声明冗余
- Select "Declaration access can be weaker"
- 取消选中 "Suggest package local visibility..." 复选框 对
编辑:在最新的 IDEA 版本第 4 步中,这看起来已更改为 "Suggest package-private visibility level for ..." 并包括针对各种条件的多个选项
来自 Android 应用程序后台,您还需要考虑有时这些警告是多余的。所以对于 debug build
类,它可以是 package local
但对于 release build
它可能在包外使用。
我已将其禁用,@ashario 的回答对找到如何禁用它很有帮助。
这些 lint 警告中的每一个都可以使用以下代码根据具体情况加以抑制。
@SuppressWarnings("WeakerAccess")