在构造Edit()
对象时,如何默认调用Breuk
方法?
public class Breuk {
public Breuk() {//constructor
}
private static Breuk Edit (Breuk b){ //function
}
}
答案 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
方法默认调用 ,则可以使用初始化程序块。
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
}
}