以下内容无法编译,并给出“非法前向引用”消息:
class StaticInitialisation {
static
{
System.out.println("Test string is: " + testString);
}
private static String testString;
public static void main(String args[]) {
new StaticInitialisation();
}
}
但是,以下内容会编译:
class InstanceInitialisation1 {
{
System.out.println("Test string is: " + this.testString);
}
private String testString;
public static void main(String args[]) {
new InstanceInitialisation1();
}
}
但是以下内容无法编译,并给出“非法前向引用”消息:
class InstanceInitialisation2 {
private String testString1;
{
testString1 = testString2;
}
private String testString2;
public static void main(String args[]) {
new InstanceInitialisation2();
}
}
为什么InstanceInitialisation1不能编译StaticInitialisation和InstanceInitialisation2?
JLS的第8.3.3节涵盖了这一点:
有时会限制使用其声明在文本后出现的类变量,即使这些类变量在范围内(第6.3节)。具体来说,如果满足以下所有条件,则是编译时错误:
使用类变量后,将在文本或类C中声明类变量;
在C的类变量初始值设定项或C的静态初始值设定项中,此用法是一个简单的名称;
用法不在作业的左侧;
C是封闭使用的最里面的类或接口。
有时会限制使用声明之后以文本形式出现的实例变量,即使这些实例变量在范围内。具体来说,如果满足以下所有条件,则是编译时错误:
类或接口C中实例变量的声明在使用实例变量后以文本形式出现;
在C的实例变量初始化器或C的实例初始化器中,此用法是一个简单的名称;
用法不在作业的左侧;
C是封闭使用的最里面的类或接口。
在第二种情况下,用法 不是 一个简单的名称-您已经this
明确地使用了。这意味着它不符合上面引用的第二个列表中的第二个项目符号,因此没有错误。
如果将其更改为:
System.out.println("Test string is: " + testString);
…那么它将无法编译。
或反方向,可以将静态初始化程序块中的代码更改为:
System.out.println("Test string is: " + StaticInitialisation.testString);
奇怪,但这就是它的方法。
我想写一个计算长除法问题总进位的代码。这是我为carries编写的函数。我相信问题在于,第一个while循环并没有一直运行。如果是,为什么?这是在Python 3.5中实现的。
问题内容: 我读到每个应用程序都在自己的JVM中运行。为什么会这样呢?他们为什么不让一个JVM运行2个或更多应用程序? 我说的是通过公共静态void main(String [])方法启动的应用程序…) 问题答案: (我假设您正在谈论通过方法启动的应用程序…) 理论上,您可以在JVM中运行多个应用程序。实际上,它们可以以各种方式相互干扰。例如: JVM具有一组System.in/out/err,一
应用程序崩溃,我会得到以下错误: 致命异常:主进程:com.example.ayyan.JellyBeanEstimator,pid:2960 java.lang.RuntimeException:无法启动活动 ComponentInfo{com.example.ayyan.JellyBeanEstimator/com.example.ayyan.JellyBeanEstimator.MainAc
我想根据id加入Customer和Address对象。这些是我对kafka stream for Customer主题的输入 和以下fro地址 我使用了间隔连接以及使用TumblingEventTimeWindows和滑动窗口的JoinFunction,但它没有连接客户和地址流。我不明白我在代码中遗漏了什么。
据我所知,Flask应该创建一个线程和第二个线程在其上运行,但我看到的是总是有两个进程在运行,而不是线程。即使是最简单的应用程序。 您可以看到两个进程正在运行: 这里到底发生了什么?
我想让用户输入和,这样我们就可以计算矩形的面积。我有两个类是和。问题是,当我试图运行此代码时,有一个错误: 程序有多个入口点 如何解决这个问题? 这是我的代码: