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

我们可以使包含主要方法的类匿名吗

巫马刚洁
2023-03-14

下面是匿名内部类的示例,我们使用A创建匿名类

class A
{
    void one()
    {
        System.out.println("hello");
    }
}

class One
{
    public static void main(String args[])
    {
        new A()
        {
            void five()
            {
                one();
            }
        }.five();
    }
}

我的问题是我们可以将类 1 设置为匿名(而不是其内部匿名类),即包含公共静态 void main 方法的简单类。

共有2个答案

公良安邦
2023-03-14

不能为匿名类创建静态方法。首先,您将无法引用静态方法。唯一可能的方法是在运行时进行反射(几乎不是好的编码实践)。在第二个实例中,所有匿名类和内部类都是使用某个“父”实例创建的(在您的示例中,A 的匿名实例将包含对 One 实例的引用)。这意味着内部类和匿名类在设计时没有考虑静态方法。如果它们确实需要静态方法,那么它们应该是父类的一部分。

姬和豫
2023-03-14

静态无效主(字符串…)必须是静态并且内部类(匿名或其他)不能有静态方法。

关于嵌套类与内部类http://docs . Oracle . com/Java se/tutorial/Java/Java oo/Nested . html

嵌套类分为两类:静态类和非静态类。声明为静态的嵌套类称为静态嵌套类。非静态嵌套类称为内部类。

 类似资料:
  • 是否有任何Java语法可以从外部类访问匿名内部类中定义的新方法?我知道可以有各种变通方法,但我想知道是否存在一种特殊的语法? 举个例子 我自己的解决方案 我只是把所有的方法和成员转移到了外部类。

  • 问题内容: 我想创建一个PHP类,可以说Myclass.php。现在在该类中,我只想定义类本身和一些实例变量。但是所有方法都必须来自Myclass_methods.php文件。我可以只将该文件包含到班级正文中吗? 我有充分的理由为什么要分开这个。简而言之,我将拥有一个后端,在其中可以更改类的业务逻辑,而所有其他内容必须保持不变。系统为我维护所有ORM和其他内容。 但是,如果这不是一个好主意,则最好

  • 问题内容: 我想创建一个扩展另一个类的匿名内部类。 实际上,我要执行的操作如下: 这可能吗? 问题答案: 您不能给匿名类命名,这就是为什么它被称为“匿名”的原因。我看到的唯一选择是从您的外部范围引用变量 另一个选择是像这样定义一个本地类(不是匿名类): 如果您还需要更多,请创建一个常规类…

  • 问题内容: 在我的某些项目和某些书中,据说最好 不要 使用内部类(不管是匿名与否,静态还是非静态),除非在某些受限制的条件下(例如s或s)。在我的第一个行业项目中,他们甚至被“禁止”。 这真的是最佳做法吗?为什么? (我不得不说我经常使用它们…) -编辑— 在所有这些答复中我都找不到一个正确的答案:大多数答复中都包含正确的部分:我仍将使用内部类,但我将尽量少使用它们! 问题答案: 在我看来,Jav

  • 闭包从封闭的作用中域捕获变量简单明了。这样会有某些后果吗?当然会。观察一下使用闭包作为函数参量的方式是要求为泛型的,它们定义的方式决定了这是必要的(原文:Observe how using a closure as a function parameter requires generics, which is necessary because of how they are defined):

  • 在java中,我们有一些方法来实现一些逻辑。那么匿名函数有什么用呢?当我们真的需要匿名函数时。