将变量初始化为类或构造函数?
哪个更好或哪个是正确的方式来做到这一点,你也可以给解释(我不知道在Google上使用什么搜索词)。将变量初始化为类或构造函数?
第一种方式:
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
}
}
感谢
第一种方式是更好,当你可能(也许在未来)可能想传递参数给成员的构造函数,例如:
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){ ... }
}
最好是初始化使用之前它。只初始化构造函数中始终需要/使用的变量。
那么?变量的我初始化总是使用,虽然所以类A更好? – 2012-04-26 20:26:55
让我们举一个服务类和dao类的例子。 dao类在服务类中是必需的,并且不依赖于构造函数参数,所以最好将它初始化为classB。如果一个配置参数需要根据构造函数参数进行初始化,那么遵循classB的方法。如果在一个processng中使用了一个ArrayList,最好在该方法内部使用它之前进行初始化。 – 2012-04-26 20:31:53
-1。实例成员总是被使用,否则应该被删除。初始化和构造的全部目的是使对象进入可用状态。您的注释适用于方法中的局部变量,但最好说明为'最好在使用之前声明*'。 – EJP 2012-04-27 00:12:58
答案是“这取决于”。在你已经说明的情况下,使用第二个选项可能更优雅。但是,如果一个值需要知道构造函数参数的值,或者以任何方式修改该类的构造,它可能应该在构造函数中初始化。如果一个成员可以在其声明中初始化,它应该是。这将防止在分配类时需要将它们初始化为0或Null。
除了2个都不会编译的事实之外,两者都是有效的,答案取决于上下文以及您试图实现的目标。 – assylias 2012-04-26 20:25:05
[我应该初始化构造函数或外部构造函数中的变量](http://*.com/questions/3918578/should-i-initialize-variable-within-constructor-or-outside-constructor)。 – Lion 2012-04-26 20:29:57