gpt4 book ai didi

java - Java 对象中构造函数更改时的最佳实践

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

我有一个类,其中根据新的 api 集成添加了许多参数。

例如,之前我有一个有 4 个参数的类:

Integer a;
String b;
Map<String, String> c;
List<Integer> e.

所以构造函数是:

public SampleClass(Integer a, 
String b,
Map<String, String> c,
List<Integer> e)
{
this.a = a;
this.b = b;
this.c = c;
this.e = e;
}

几个团队在他们的代码中使用这个构造函数与我的 API 集成。过了一段时间,这个类中添加了一个新参数。即

Double d;

所以我添加了一个新的构造函数:

public SampleClass(Integer a,
String b,
Map<String, String> c,
List<Integer> e,
Double d)
{
this.a = a;
this.b = b;
this.c = c;
this.e = e;
this.d = d;
}

并且我将之前的构造函数标记为已弃用。我没有删除以前的构造函数,因为如果删除,客户端的代码就会中断。

随着新参数的添加,我现在有了带有 5 个参数的构造函数。

是否有关于如何弃用/删除构造函数的最佳实践,以便此类情况不会发生?

最佳答案

更改旧的构造函数:

public SampleClass(Integer a, 
String b,
Map<String, String> c,
List<Integer> e)
{
this.a = a;
this.b = b;
this.c = c;
this.e = e;
}

public SampleClass(Integer a, 
String b,
Map<String, String> c,
List<Integer> e)
{
//Zero is passed as a default value, but you can pass anything you want
this(a,b,c,e,0);
}

这样它将在底层调用新的。

仍然,您没有提供足够的信息来说明应该在多大程度上支持旧版本。如果根本不应该,您应该将其从代码中删除。通过这种方式,您将强制 API 的用户分析更改的内容并连接新的构造函数。

如果你不这样做,他们将继续使用旧的,因为程序员很懒 :-)

关于java - Java 对象中构造函数更改时的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37250057/

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