我写了以下代码:
package staticshow;
public class StaticDemo {
static int a = 3;
static int b = 4;
static {
System.out.println("Voila! Static block put into action");
}
static void show() {
System.out.println("a= " + a);
System.out.println("b= " + b);
}
}
public class StaticDemoShow {
public static void main() {
StaticDemo.show();
}
}
我收到错误消息:
The public type StaticDemo must be defined in its own file
第一行错误public class StaticDemo {
。为什么会发生,我该如何解决?请注意,我的项目名称为StaticDemoShow
,程序包名称为staticshow
,类名称如代码中所述。
编辑 -仅公开一个类或两个类均为默认类后,出现错误“选择不包含主类型”。现在我该怎么办?
如果.java
文件包含顶级(非嵌套)public
类,则其名称与该公共类相同。因此,如果您有类似的课程,public class A{...}
则需要将其放置在A.java
文件中。因此, 我们在一个.java
文件中不能有两个公共类。
如果允许有两个公共类,则可以说,除了公共A
类文件之外,还将包含public class B{}
它,这也将要求A.java
文件中的文件 也
被命名为,B.java
但是文件不能具有两个(或多个)名称(至少在所有系统上)可以运行哪个Java)。
因此,假设您的代码位于StaticDemoShow.java
文件中,则有两个选择:
class StaticDemo { // It can no longer public
static int a = 3;
static int b = 4;
static {
System.out.println("Voila! Static block put into action");
}
static void show() {
System.out.println("a= " + a);
System.out.println("b= " + b);
}
}
public class StaticDemoShow { // Only one top level public class in same .java file
public static void main() {
StaticDemo.show();
}
}
将所有公共类移到它们自己的.java
文件中。因此,在您的情况下,您需要将其分为两个文件:
StaticDemo.java
public class StaticDemo { // Note: same name as name of file
static int a = 3;
static int b = 4;
static {
System.out.println("Voila! Static block put into action");
}
static void show() {
System.out.println("a= " + a);
System.out.println("b= " + b);
}
}
StaticDemoShow.java
public class StaticDemoShow {
public static void main() {
StaticDemo.show();
}
}
以下代码不能按预期工作。显然,我不能在类定义中使用类自己的类型: 运行它的结果是: 此外,使用检查代码会返回: 如何将此代码更正为对Python和mypy有效?
我刚刚在TypeScript 0.9.5中启动了一个新项目,以下代码抛出了一个错误: 类服务声明了IService,但没有实现它。在类型Service上定义为private的属性“getUserInfo”在类型IService上定义为public 只要我使用TypeScript,我就知道接口不能有访问修饰符!什么给? 打字操场示例
问题内容: 我正在阅读另一个SO问题,即Swift do-try-catch语法。在他的回答中, rickster 为OP的自定义类创建了扩展。 Konrad77 评论说,这是“保持代码整洁的好方法。” 我尊重他们的知识,这使我相信我在自己的代码中遗漏了一点。 除了为我创建的类创建扩展之外,还有其他好处(除了整洁)还是原因?我可以将相同的功能直接放入类中。如果我是唯一使用该类的人,或者其他人将使用
问题内容: 运行以下查询时出现该错误: 我知道我需要添加别名,但是我不确定在哪里 问题答案: 您需要为子查询添加别名,并且需要将条件应用于您合并的两个查询: 或返回数据,以便您可以在外部查询中应用条件:
问题内容: 我有一个名为的文件temp.java。我写了下面的代码。为什么这样做? 为什么这不起作用? 问题答案: 在第一个示例中,您的类实际上被声明为“包私有”(没有修饰符),这意味着只有同一包中的类才能访问它。在第二个示例中,您已将其声明为public。 在这种情况下,编译器已经很好地满足了JLS。 JLS指出: 当程序包存储在文件系统中时(第7.2.1节),如果在文件中找不到由类型名加类型组
问题内容: 为什么B类无法公开?如何在其他班级使用班级?在Cons中定义它更好吗? 问题答案: 根据Java语言规范,文件(.java)中只能有一个公共类,并且文件名应与公共类名相同。 如果希望在其他地方访问B类,则可以创建一个单独的B.java文件,然后将B类代码移至该文件。 该线程可以为您提供更多信息。