这是一个匿名内部类的变体吗?

时间:2011-06-21 22:00:43

标签: java anonymous-class

这是一个例子

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

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

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

3 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:5)

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

答案 2 :(得分:1)

这是一个匿名的内部类。