【问题标题】:Is this a variation of an anonymous inner class?这是匿名内部类的变体吗?
【发布时间】:2011-09-19 22:13:07
【问题描述】:

这是一个例子

JPanel panel = new JPanel(){
    @Override
    protected void paintComponent(Graphics g){
        // do stuff
    }

    @Override
    public Dimension getPreferredSize(){
        // do stuff
    }
};

这只是匿名内部类的变体,还是完全不同?

【问题讨论】:

    标签: java anonymous-class


    【解决方案1】:

    是的,这是一个匿名内部类

    【讨论】:

    • @Nathan,“匿名”一词是什么意思?
    • @mre:它没有名字:你不必说class MyClass extends JPanel,然后用它的名字实例化MyClass
    • @mre 好吧,您正在实例化一个您正在定义的没有名称的新类
    • @mre 本质上意味着该类未命名。您在这里拥有的是一个匿名内部类:download.oracle.com/javase/tutorial/java/javaOO/…
    • @Bruno,@Nathan,谢谢。对我来说,这个词令人困惑,尤其是当它对我来说并不“匿名”时。 :)
    【解决方案2】:

    这是一个匿名内部类。

    【讨论】:

      【解决方案3】:

      您可能对类的匿名性感到困惑,因为乍一看,您似乎将面板定义为 JPanel 的一个实例。但是,这不是您正在做的事情。相反,您正在定义 JPanel 的 子类,它是一个新类,并创建面板作为这个新子类的实例。这个新班级叫什么名字?好吧,它没有,因此它是匿名的!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-01-24
        • 2011-10-21
        • 1970-01-01
        • 1970-01-01
        • 2011-07-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多