2012-04-05 47 views
2

我想知道它是否可能,如果是这样的话,如何创建一个构造函数,该变量需要三个变量,但如果最后两个变量不通过则不会通过错误?带有非必要变量的构造函数

类似:

public void onCreate(Bundle savedInstanceState, String s1<non essential>) 
    { 
+0

你的方法定义只显示两个参数 – Rachel 2012-04-05 21:33:37

+0

onCreate()是一个方法,而不是构造函数。鉴于您拥有的签名,您正在编写一个Android活动。在这种情况下,您无法更改onCreate的参数列表,您必须保持它与获取它时相同。 – mwengler 2012-04-28 05:04:16

回答

12

创造更多contructors

public MyCreate(Bundle savedInstanceState) 
    { 

public MyCreate(Bundle savedInstanceState, String s1) 
    { 

public MyCreate(Bundle savedInstanceState, String s1, String s2) 
    { 

尝试在构造函数重载阅读本article

+1

如果可能的话,使其中一个构造函数成为“主”构造函数,并让其他构造函数只是委托给this(savedInstanceState,DEFAULT_S1,DEFAULT_S2 ...)。这样,如果你的构造函数确实发生了变化,那么你的代码更少。 – yshavit 2012-04-05 21:37:26

0

你有多种方式来做到这一点。仅举几例:

  • 你可以有不同的签名多个构造函数(如
    通过dash1e建议)
  • 你可以有变量的类型的列表中选择所需(或
    对象,如果你想它是完全通用的),并有一个构造函数,该函数接受列表并在存在时使用它的值。
  • 你可以有一个自定义数据模型类来封装三个
    类型的值要处理和构造
    使用它,
    使得它,这样,当它的值由
    构造正在取出你的班级,他们是你想要的参数的可选项。
0

我真的很喜欢dash1e's answer最好。 Luis Miguel Serrano有一些很好的附加建议。

另外 - 如果合适的话 - 你可以使用可变参数

public MyCreate(Bundle savedInstanceState, String ... args) 

具有作为

public MyCreate(Bundle savedInstanceState, String [ ] args) 

同样的效果是非常相似的路易斯·米格尔·塞拉诺,用列表,但你不不得不去创建列表的麻烦。