Java 如何在参数对象中声明字符串,然后在get方法中返回该字符串?
我需要一个void setupplementalinsurance(InsurancePolicy)方法来为保单设置补充保单。和保险单getSupplementalInsurance():返回该保险单的补充保险单(如果存在)。当我在对象的参数中输入字符串时,会出现一些错误Java 如何在参数对象中声明字符串,然后在get方法中返回该字符串?,java,Java,我需要一个void setupplementalinsurance(InsurancePolicy)方法来为保单设置补充保单。和保险单getSupplementalInsurance():返回该保险单的补充保险单(如果存在)。当我在对象的参数中输入字符串时,会出现一些错误 public class InsurancePolicy{ String s1 = "additional policy"; public InsurancePolicy(String s1){ this.s1
public class InsurancePolicy{
String s1 = "additional policy";
public InsurancePolicy(String s1){
this.s1=s1;
}
InsurancePolicy j=new InsurancePolicy(s1);
public void setSupplementalInsurance(InsurancePolicy policy){
this.j=policy;
}
public InsurancePolicy getSupplementalInsurance(){
return j;
}
}
考虑用于初始化对象的代码(格式化为可读性): 这里的技术问题在第二行(初始化
j
成员变量),因为您不能使用类成员(s1
在本例中)以这种方式初始化另一个类成员(j
)。提供的值必须是编译时常量,如前一行中的文字字符串“additional policy”
然而,概念上的问题是,这里甚至不需要默认值,这会导致一些重复的逻辑。该类只有一个构造函数,该构造函数有一个String
参数。因此,每当创建类的实例时,都需要一个字符串
因此,您可以同时解决概念问题和技术问题。概念上的问题解决了,因为您可以始终依赖提供的值,而不需要默认值。技术问题的解决在于,您可以在构造函数中而不是在类级别初始化类成员。例如:
String s1;
InsurancePolicy j;
public InsurancePolicy(String s1){
this.s1 = s1;
this.j = new InsurancePolicy(s1);
}
在这种情况下还需要注意以下几点:
- 像这样的类成员可能也应该显式地
private
。如果需要外部访问这些成员,请创建getter/setter方法。您的类似乎已经为j
提供了这样的方法,这是一个良好的开端
- 如有必要,考虑向构造函数添加逻辑以验证提供的
字符串值。也就是说,防止出现null
或空字符串或任何其他可能破坏下游逻辑的情况
- 如果用于初始化
InsurancePolicy
的String
值也可以从InsurancePolicy
对象派生(我看没有理由不这样做),则您正在复制此处的数据。类成员s1
很可能根本不需要,应该删除
请使用有意义的变量名。我假设j
是supplementalInsurance
“出现了一些bug”-也许您可以更具体一些?欢迎使用DrJava。工作目录是/Users/a1387581600/Desktop>InsurancePolicy j=new InsurancePolicy(s1)静态错误:未定义的名称“s1”>有人知道如何在交互窗格中解决此类问题吗
String s1;
InsurancePolicy j;
public InsurancePolicy(String s1){
this.s1 = s1;
this.j = new InsurancePolicy(s1);
}