gpt4 book ai didi

Java:所有构造函数的公共(public)代码?

转载 作者:搜寻专家 更新时间:2023-11-01 02:27:01 25 4
gpt4 key购买 nike

在我看来构造函数可以共享相同的代码,例如:

public class Foo {
private int foo;
{foo = 5;}
public Foo(){}
public Foo(int v){this.foo = v;}
public int getFoo(){return foo;}
}

代码“foo=5;”为两个构造函数调用。

在我看来你不能,但我想确定一下。无法创建使用参数的通用代码?

例如:

public class Foo {
private int foo;
(int m){foo = m*5;}
public Foo(int m){}
public Foo(int v,int m){this.foo = v;}
public int getFoo(){return foo;}
}

据我了解,唯一的方法是创建一个 private void init(int m) 以供所有构造函数调用?

ps: 我把 {foo = 5;} 称为“通用代码”,但我想这个功能还有另一个正式名称?

编辑 (1):

  1. 我要找的术语是初始化 block

  2. 这个问题与询问构造函数是否也可以调用另一个构造函数不同构造函数。因为当使用初始化 block 时,代码被自动调用,即。没有调用构造函数而忘记调用它的风险

  3. 我对使用“void init”的评论并不好,实际上在这种情况下调用另一个构造函数更好。

  4. 简而言之,我的问题是:初始化 block 可以带参数吗?这在某种程度上与强制实现所有构造函数上的某些参数是一样的。

编辑 (2):

我现在想知道实现我所要求的唯一方法是否是使用继承来强制使用特定的构造函数。

最佳答案

您可以通过调用 this() 并匹配参数列表从其他构造函数调用您的构造函数。

假设我有:

Foo(int a, int b) {
// some code..
}

但我也想调用:

Foo(int a, int b, int c) {
// some other code
}

我会这样说:

Foo(int a, int b) {
this(a, b, 0);
// Whatever other code you want in this constructor.
}

关于Java:所有构造函数的公共(public)代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19871949/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com