java - 主类中使用的每个类都必须是静态的吗?
问题描述
我是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());
}
}
解决方案
由于您的类是非静态嵌套类,因此它包含对其父类的引用(在本例中Solution
)。
因此,为了实例化ShinyMetal
你需要一个父实例(即Solution
)。
为了克服这个问题,您需要声明ShinyMetal
为静态或实例化Solution
然后访问它。
我建议你看看这里的文档,它很好地解释了所有这些:
https://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html
推荐阅读
- c++ - 更改常量 Mat opencv 的值
- vuejs2 - 如何为 v-treeview 添加右键单击事件以在 vuetify 中打开菜单?
- java - MapReduce 项目的 Mapper 部分中的多个错误
- functional-programming - 捕获函数组合中参数的排序特征的术语
- java - 如何处理 FileSystemAlreadyExistsException?
- javascript - 如何检查 SET 和 WHERE 上是否存在文档
- javascript - Rotate picture according to Cursor move direction
- vuejs2 - Filter list by date and search through list
- ios - SceneKit 检测 SCNode 何时不移动
- linux - 使用 -m32 编译会产生“执行格式错误”