作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我读过关于 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/
我是一名优秀的程序员,十分优秀!