gpt4 book ai didi

java - 将基于字符串的构造函数添加到 Java 类的最佳方法?

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

假设我有一些类(class),例如富:

public class Foo {
private Integer x;
private Integer y;

public Foo(Integer x, Integer y) {
this.x = x;
this.y = y;
}


public String toString() {
return x + " " + y;
}
}

现在,我想添加一个构造函数,它以表示 Foo 的字符串作为参数,例如Foo("1 2") 将构造一个 x=1 和 y=2 的 Foo。因为我不想复制原始构造函数中的逻辑,所以我希望能够做这样的事情:

public Foo(string stringRepresentation) {
Integer x;
Integer y;

// ...
// Process the string here to get the values of x and y.
// ...

this(x, y);
}

但是,Java 不允许在调用 this(x, y) 之前有语句。是否有一些公认的解决方法?

最佳答案

由于有两个值,这种特殊情况有点尴尬,但您可以做的是调用静态方法。

  public Foo(Integer x, Integer y) {
this(new Integer[]{x, y});
}

public Foo(String xy) {
this(convertStringToIntegers(xy));
}

private Foo(Integer[] xy) {
this.x = xy[0];
this.y = xy[1];
}

private static Integer[] convertStringToIntegers(String xy) {
Integer[] result;
//Do what you have to do...
return result;
}

话虽这么说,如果这个类不需要子类化,那么让构造函数全部私有(private)并拥有一个公共(public)静态工厂方法会更清楚、更好、更惯用:

  public static Foo createFoo(String xy) {
Integer x;
Integer y;
//etc.
return new Foo(x, y);
}

关于java - 将基于字符串的构造函数添加到 Java 类的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2376716/

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