作者:痴痴傻傻 | 来源:互联网 | 2023-01-08 11:50
在IntelliJ IDEA 2017.2.6中,我有以下Java类.
public class EinzUnregisterResponseMessageBody extends EinzMessageBody {
private final String username, reason;
public EinzUnregisterResponseMessageBody(String username, String reason){
this.username = username;
this.reason = reason;
}
/**
* @return the body as JSONobject, ready to be included as "body":{this returned Object} in a message
*/
@Override
public JSONObject toJSON() throws JSONException {
return new JSONObject("{\"username\":\""+this.username+"\"," +
"\"reason\":\""+this.reason+"\"}");
}
public String getReason() {
return reason;
}
public String getUsername() {
return username;
}
}
IntelliJ通常以浅灰色显示未使用的属性.在这堂课中,它只会变灰getReason()
.有意义的是它不会使构造函数或字段变灰.该方法toJSON()
在抽象超类中定义,EinzMessageBody
因此必须存在,所以它也不是灰色的是正确的.
getReason()
永远不会被使用,因此变得灰暗.但为什么getUsername()
不是灰色的呢?
当我右键单击它并选择查找用法时,IntelliJ报告没有找到任何用法.
我知道这个问题,但运行分析>检查代码和分析>按名称运行检查>未使用的属性似乎对此没有任何影响.也没有重新启动IDE.
无效缓存和重新启动首先重置显示,以便不会显示任何内容,但一旦完成索引,突出显示将再次相同.
以下是它在IntelliJ中的显示方式
超类EinzMessageBody
只指定toJSON()
,getReason()
也不指定getUsername()
.
getReason()
和之间有什么区别getUsername()
?
关于@HonzaZidek的评论:
删除extends EinzMessageBody
和注释@Override
不会改变任何内容.
创建一个完全空的项目并仅粘贴此类,EinzMessageBody
并使除toJson()
方法之外的所有内容都显示为灰色.这是预期,因为我现在还没有实例化类-这样的构造被灰色的,都getReason()
和getUsername()
行为相同(均为灰色).
当我将类移动到不同的子包时,这仍然像预期的那样,就像它在我的真实项目设置中一样.
当我实例化类时,这仍然按预期运行:构造函数停止灰显,getReason()
并且getBody()
仍然正确地显示为灰色.
我只是拉了我的笔记本电脑(而不是台式电脑),同样的行为也发生在那里.
我还搜索getUsername()
了其他子类的任何用法,EinzMessageBody
并找到了一个.删除这个并没有改变getUsername()
in EinzUnregisterResponseMessageBody
为灰色.
此答案建议运行" 分析">"按名称运行检查">"未使用的声明",因为出于性能原因,IntelliJ可能无法检查常用名称.列出两者getReason()
和getUsername()
未使用,但显示样式保持不变.