从构造函数调用函数

时间:2015-03-04 19:51:02

标签: java

在构造Edit()对象时,如何默认调用Breuk方法?

public class Breuk {
    public Breuk() {//constructor

    }

    private static Breuk Edit (Breuk b){ //function 

    }
}

3 个答案:

答案 0 :(得分:1)

每次创建新的Breuk对象时,默认情况下会调用Edit()方法,因为它放在构造函数中。由于该方法是静态的,因此必须以静态方式调用,即ClassName.staticMethod()。由于该方法需要Breuk个对象作为参数,因此您将this引用传递给它,这意味着正在构造的对象。

顺便说一下,根据Java约定,所有方法名称都应该是小写的。因此,请考虑将Edit(...)重命名为edit(...)

class Breuk {
  int x;
  int y;

  public Breuk(int x, int y) {
    Breuk.Edit(this);
  }

  private static void Edit(Breuk b){
    //edits breuk
  }
}

答案 1 :(得分:1)

首先,您应该坚持使用Java命名约定,该约定规定方法名称应为 lowerCamelCase 。因此,您应该将Edit()方法重命名为edit()

如果您希望在构造edit()类的实例时将Breuk方法默认调用 ,则可以使用初始化程序块。

摘自the Java Tutorial

  

Java编译器将初始化程序块复制到每个构造函数中。因此,这种方法可用于在多个构造函数之间共享代码块。

对于您的示例,您可以尝试这样的事情:

public class Breuk {

    { // initializer block
        Breuk.edit(this); // always called by default, 
                          // no matter which constructor is used
    }

    public Breuk() { // no-args constructor

    }

    public Breuk(int a1, int a2) { // another constructor

    }

    private static Breuk edit(Breuk b) { // function 

    }
}

我假设您要将正在构建的实例传递给edit()方法,这就是为什么this作为参数传递的原因。

修改

如果这个假设成立,我建议你让edit()方法返回void,因为你不能将实例分配给this,因为它是' s final(它也没有任何意义)。

答案 2 :(得分:0)

只需从默认构造函数的末尾调用该方法即可。没有必要考虑任何"默认"在这里打电话只需实施它。

public class Breuk {
    public Breuk() {
        // constructor
        edit(this);
    }

    private static Breuk edit (Breuk b){ 
        // class-level processing on any Breuk that is constructed 

    }
}