在Java中的一个构造函数内部的两个构造函数调用

时间:2015-06-25 11:43:06

标签: java constructor

假设以下情况:

add_action('woocommerce_email_customer_details','my_custom_data',10,3);
function my_custom_data( $order, $sent_to_admin, $plain_text ){
    if(true==$sent_to_admin){
    echo "the magic code to get Google Adwords gclid parameter";
    }
}

Java抱怨构造函数调用必须是构造函数中的第一个语句。我不能同时将两个构造函数调用放在第一位。是否有任何解决方法可以在两个参数构造函数中重复单参数构造函数的代码?

2 个答案:

答案 0 :(得分:4)

在我输入问题时,我想到了答案。我不需要在第一个构造函数中调用super,因为在单参数构造函数中调用了super。

我需要做的就是:

class Foo{

    Foo(I i, I1 i1){
        this(i);
        ... 
    }

    Foo(I i){
        super();
        ...
    }
}

答案 1 :(得分:1)

是的,正如您在评论中提到的,您不需要打电话给super()。 它在Java中如何工作?

如果您没有编写任何构造函数,那么在编写代码并插入时,Java会写入您:

public class Apple{
public Apple(){ // INJECTED BY JAVA,
   super();  // Object class
}

如果你编写一个构造函数,但不要添加任何东西而不是java替换你的:

public class Apple{
public Apple(){
   super();  // ADDED BY JAVA, during compiling
}

如果你自己编写:

public class Apple{
public Apple(){
   // init things and make the world a better place
}

在这种情况下Java不会插入任何内容,但是super();因为它也需要调用Object类。所以,super();实际上会不惜一切代价。

如果你有多个构造函数调用,this(),则比Java将添加super(); //构造函数顶部的对象类调用。

来源: https://docs.oracle.com/javase/tutorial/java/IandI/super.html https://docs.oracle.com/javase/tutorial/java/IandI/objectclass.htmlhttp://www.amazon.co.uk/Programmer-Study-1Z0-803-1Z0-804-Oracle/dp/0071772006/ref=sr_1_1?s=books&ie=UTF8&qid=1435233062&sr=1-1&keywords=ocjp