添加新变量而不扩展类

时间:2015-03-06 02:17:34

标签: java class

我有按钮,我想做这样的事情:

Button b=new Button(){public int a;};
b.a=5;

如何在java中执行此操作?

4 个答案:

答案 0 :(得分:1)

您似乎想要一个自定义Button对象。

只需创建一个扩展名为Button的新类,并在该类中声明a变量以及您要添加的任何其他方法。

这样的东西
public class SomeClass extends Button
{
   public int a;
}

public class SomeOtherClass
{
    public static void main(String args[])
    {
        SomeClass someClass = new SomeClass();
        someClass.a = 5;
    }
}

如果你真的不想扩展课程,那就不可能了。遗憾。

此外,您的示例实际上是创建一个扩展Button的匿名类。

答案 1 :(得分:1)

无法在不扩展变量的情况下向类中添加变量。但是,扩展类不需要命名:您可以使用匿名类,其方式类似于帖子中的片段。

然而,诀窍是在添加变量后访问变量:你可以通过改变从类中引用的对象来实现它,如下所示:

// Prepare a mutable object for use in your class
final AtomicInteger a = new AtomicInteger(123);
Button b = new Button(){
    public void someMethod() {
        ...
        int n = a.intValue();
        ...
    }
};

当您以这种方式进行设置时,a类的匿名子类someMethod()可以访问方法中对Button状态的更改。< / p>

答案 2 :(得分:0)

没有扩展课程?抱歉。你做了一个扩展课程。习惯它。

public class OneAtButton extends Button {
    public int aWellNamedClassMemberVariable;

    OneAtButton () {  // constructor
       aWellNamedClassMemberVariable = 5;
    }

} // class OneAtButton

答案 3 :(得分:0)

您无法为创建该类的新对象的同一行中的类创建新变量。如果您想要将新变量添加到按钮类中,请修改类以包含新变量或创建类扩展,如Jean-FrançoisSavard所说。