执行以下代码时,会出现异常java。将抛出lang.stackOverflowerr
。
类中的main()方法:
class Something {
public static void main(String args[]) {
System.out.println(Color.RED);
System.out.println(Color.GREEN);
System.out.println(new Color().BLUE);
}
}
下面是课程Color
:
class Color {
public static final Color RED = new Color();
public static final Color GREEN = new Color();
public final Color BLUE = new Color();
}
但是当我在公共的最终颜色BLUE=new Color();中把静态放在最终后面时,程序会正确运行,而不会抛出StackOverflow Error。为什么它不抛出异常?是不是当JVM识别出某个静态
对象引用自己时,它应该停止?Java如何处理这个问题?
没有静态
:
class Color {
public final Color BLUE = new Color();
}
要创建Color
(通过new Color()
)的实例,必须为BLUE
字段创建Color
的实例;要创建Color
的实例,必须为BLUE
字段创建Color
的实例;要创建Color
的实例,必须为BLUE
字段等创建Color
的实例。看到问题了吗?
如果你使它静态
:
class Color {
public static final Color BLUE = new Color();
}
每次创建Color
的新实例时,都不会重新初始化BLUE
。初始化类时会创建Color
的实例,就是这样。
问题内容: 来自问题的原因,或者说更确切地说,object .__new__在这两种情况下的工作方式不同 作者对为什么不感兴趣,而对如何感兴趣。 我非常想了解原因,尤其是: 为什么不打印任何参数而不是 为什么没有为testclass3引发错误?(因为除了自我之外没有其他参数) 码 问题答案: 您正在使用旧的Python版本;此错误消息已更新: Python只会抱怨既不支持又不被覆盖的参数。例如,当
问题内容: 我正在研究列表和元组之间的区别(在Python中)。一个明显的例子是,元组是不可变的(在初始赋值后不能更改值),而列表是可变的。 文章中的一句话让我明白了: 只能将不可变元素用作字典键,因此只能将元组而不是列表用作键。 我很难考虑要使用元组作为字典键的情况。您能否提供一个示例问题,说明这是自然,高效,优雅或显而易见的解决方案? 编辑: 感谢您的示例。到目前为止,我认为一个非常重要的应用
问题内容: 我了解这代表调用方法的对象,并且静态方法未绑定到任何对象。但是在上述情况下,变量y也是静态的。 如果我们可以在类对象上调用静态方法,为什么不能允许静态方法设置类的静态变量。 此附加约束的目的是什么? 问题答案: 因为是指对象实例。静态方法的调用中没有对象实例。但是当然你可以访问你的静态字段(仅静态字段!)。只需使用 如果要确保获取的是静态字段,而不是某些具有相同名称的局部变量,请使用类
主要问题: 我试图在网页上打印错误,如果连接到MySQL服务器不做。为此,我写了一个错误的库名
我有一个h2作为唯一的项目在一个容器div。我在容器上使用position:relative和h2上使用position:absolute/bottom:0使它与容器底部对齐。但是,我无法使h2文本与容器div的右侧对齐。 HTML: CSS: 链接:http://www.distributionaccess.com/new/stempath/about.html 我在h2上尝试了display:
问题内容: 为什么在Java中不使用const关键字? 您能看到在Java语法中使用某些可传递const或不可变关键字的任何缺点,还是为什么选择了常见的繁琐方法? 您能看到关闭请求的 原因 ,Sun提供了任何解释吗? 问题答案: 您能看到关闭请求的原因吗,Sun是否提供任何解释? 是。Sun在请求本身中提供了三个为什么不对请求执行操作的原因。我引用: “目前尚无计划将此功能添加到Java中。除了蔓