gpt4 book ai didi

java - 为什么我收到错误 "non-static variable this cannot be referenced from a static context"?

转载 作者:行者123 更新时间:2023-11-30 07:23:32 25 4
gpt4 key购买 nike

我读过关于 non-static variable this cannot be referenced from a static context 的错误,但我不明白为什么我会在我的案例中得到它(行 return new CommandParser1(命令);)?我只是创建类的实例。就这样。有什么问题?

public class ProtocolUtility {

public static CommandParser createParser(String command) throws Exception {
switch (command) {
case COMMAND_1:
return new CommandParser1(command);
case COMMAND_2:
return new CommandParser2(command);
default:
return null;
}
}

public abstract class CommandParser {

protected String command;

public String getCommand() {
return command;
}
}

public class CommandParser1 extends CommandParser {
public CommandParser1 (String command){
//...
}
}

public class CommandParser2 extends CommandParser {
public CommandParser2 (String command) {
//...
}
}

最佳答案

CommandParser 是一个内部类,这意味着它需要创建一个外部类 (ProtocolUtility) 的实例。将其声明更改为:

public static abstract class CommandParser {

或者在单独的 .java 文件中声明 CommandParser

如果 createParser() 不是 static,您的代码也可以工作,因为在这种情况下,您当前使用的 ProtocolUtility 实例将用作外部实例。

关于java - 为什么我收到错误 "non-static variable this cannot be referenced from a static context"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11956896/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com