将变量初始化为类或构造函数?

时间:2012-04-26 20:20:52

标签: java android

哪个更好或哪个是正确的方法,你还可以给出解释(我不知道在谷歌上使用什么搜索词)。

第一种方式:

Public Class A()
{
    Paint _paint _test;

    public void running()
    {
        _test = new Paint();
       //use paint
    }
}

OR

Public Class B()
{
    Paint _paint _test = new Paint();

    public void running()
    {
        //use paint
    }
}

由于

3 个答案:

答案 0 :(得分:4)

第一种方法是更好的,当你可能(可能在将来)可能想要将参数传递给成员的构造函数时,例如:

class Foo{
    private Bar bar;

    public Foo(){
        bar = new Bar();
    }

    public Foo( String s ){
        bar = new Bar( s );
    }
}

当您知道永远不想将参数传递给成员的构造函数并且您有多个构造函数都需要初始化此成员时,第二种方法会更好,例如:

class Foo {
    private Bar bar = new Bar();

    public Foo( String s ){ ... }
    public Foo( int i ){ ... }
    public Foo( double d ){ ... }
    public Foo( String s, int i ){ ... }
}

答案 1 :(得分:0)

答案是'这取决于'。在您已经说明的情况下,使用第二个选项可能更优雅。但是,如果值需要知道构造函数参数的值,或者以类的构造以任何方式改变它,那么它应该在构造函数中初始化。如果成员可以在其声明中初始化它应该是。这将防止在分配类时将它们初始化为0或Null。

答案 2 :(得分:-1)

最好在使用之前进行初始化。仅初始化构造函数中始终需要/使用的变量。