当前位置: 首页 > 知识库问答 >
问题:

在Java中,如果父类有psvm,为什么不能使用带有名称的内部类作为字符串呢

尚棋
2023-03-14
public class OuterClass {
    public static void main(String[] args) {
        System.out.println("Hello !");
    }

    private class String {
      int i = 10;
    }
}

上面的代码编译得很好

当我尝试运行上面的代码时,它抛出错误为“错误:在类中找不到Main方法,请将Main方法定义为:public static void Main(string[]args)”。为什么会发生这样的运行时Exeption?

共有1个答案

公西星海
2023-03-14

因为您的内部类比java.lang.String具有更高的可见性;因此,您已经更改了签名。更改main,如

public static void main(java.lang.String[] args) {
    System.out.println("Hello !");
}

或重命名类字符串

 类似资料:
  • 这可能是一个愚蠢的问题,但是我很惊讶地看到,在外部类中不允许使用私有内部类作为泛型类型。 如果我使内部类受到保护,它编译得很好。 此外,我还必须精确而不仅仅是,否则找不到内部类。这看起来也有点奇怪。 为什么内心不能是私密的?为什么它被允许受到保护? 错误是: 我使用的是JavaSE17,但我认为它并没有太大用处。

  • 问题内容: 就在今天,我需要一种在不同对象之间传递函数的方法。我很快了解到您不能直接在Java中做到这一点,但是您可以传递一个wht实例,该实例显然被称为“匿名内部类”,如下所示: 定义类: 使其成为一个实例: 并称之为: 很简单。但是我不明白的是为什么它被称为“匿名”。我不只是给它起名字MyCallback吗?命名的东西不能匿名,对吗?请避免对这个术语感到困惑。 问题答案: 不,您说的是MyCa

  • 问题内容: ava类名称中哪些字符有效?还有哪些其他规则管理Java类名称(例如,Java类名称不能以数字开头)? 问题答案: 你几乎可以使用任何字符,包括大多数Unicode字符!确切的定义在Java语言规范的3.8:标识符一节中。 一个标识符是无限长序列的Java字母和爪哇位,其中第一个必须是一个爪哇字母。… 字母和数字可能来自整个Unicode字符集,…这允许程序员在使用其母语编写的程序中使

  • 问题内容: 在Java 7和更高版本中,菱形通常可以像这样毫无问题地用于推断类型: 但是,它不能用于这样的匿名内部类: 为什么是这样?从逻辑上讲,在这种情况下,我绝对可以将类型推断为。做出该决定的逻辑上的理由是,实际上不能在匿名内部类上推断类型,还是出于其他原因而将其省略了? 问题答案: 在JSR-334中: 不支持将Diamond与匿名内部类一起使用,因为这样做通常需要扩展类文件签名属性以表示不

  • 为什么我不能这样做/是否有解决方法来实现这一点: 这两个编译错误是 > On

  • 问题内容: 在java中内部类和静态内部类有什么不同? 问题答案: 从Java教程: 嵌套类分为两类:静态和非静态。声明为静态的嵌套类简称为静态嵌套类。非静态嵌套类称为内部类。 静态嵌套类使用封闭的类名称访问: 例如,要为静态嵌套类创建一个对象,请使用以下语法: 作为内部类实例的对象存在于外部类实例中。考虑以下类别: InnerClass的实例只能存在于OuterClass的实例中,并且可以直接访