【发布时间】:2019-02-12 23:36:20
【问题描述】:
我对 java 完全是个菜鸟,但是在练习时我突然想到,使用 OOP 设计,主类中的每个类都必须是静态的,对吗?在这段代码中,我无法在 main 中调用非静态的类(ShinyMetal)。似乎我可能遗漏了为什么你会声明一个静态类的原因。谢谢你的帮助!
public class Solution {
public class ShinyMetal {
}
public static void main(String[] args) {
ShinyMetal abcd = new ShinyMetal(); // error cannot be referenced from static context
System.out.println(abcd.toString());
}
}
【问题讨论】:
-
你还没有将一个类声明为静态的。
-
ShinyMetal是Solution的 inner 类,由于它不是静态的,因此您需要Solution的实例来调用构造函数(继续阅读内部类了解更多信息)。所以至少有 3 种方法可以解决这个问题: 1. 将ShinyMetal移出Solution,将其移到自己的文件中或使其成为非公开文件,2. 将ShinyMetal设为静态,3. 通过 @ 创建实例987654328@.
标签: java class error-handling static main