Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 硬编码实例变量的默认值可以吗?_Java_String_Default - Fatal编程技术网

Java 硬编码实例变量的默认值可以吗?

Java 硬编码实例变量的默认值可以吗?,java,string,default,Java,String,Default,在我正在编码的新对象中有一个实例变量,它几乎总是一个特定的值。在本例中是“N”。将默认值硬编码为字符串实例变量可以吗 private String aBusinessSwitch= "N"; 稍后在一个方法中,我有一个if条件,它只会在一些罕见的情况下将值设置为“Y” 当我声明字段时,最好不要硬编码默认值“N”,而是将else添加到我的if语句中,将其设置为“N” 在这种情况下使用bool?Enum如果您需要的不仅仅是yes&no。yes使用布尔或普通实例变量,Enum最适合大量值。正如其他人

在我正在编码的新对象中有一个实例变量,它几乎总是一个特定的值。在本例中是“N”。将默认值硬编码为字符串实例变量可以吗

private String aBusinessSwitch= "N";
稍后在一个方法中,我有一个
if
条件,它只会在一些罕见的情况下将值设置为“Y”

当我声明字段时,最好不要硬编码默认值“N”,而是将
else
添加到我的
if
语句中,将其设置为“N”


在这种情况下使用bool?Enum如果您需要的不仅仅是yes&no。

yes使用布尔或普通实例变量,Enum最适合大量值。

正如其他人所指出的,“N”和“Y”的使用提示字符串类型错误,布尔或Enum可能是更好的选择。但这并不能回答你的问题


我不会使用默认值,因为它将如何在两个位置确定该值的逻辑分割开来。如果只在一个位置设置它,如果这个位置在构造函数中,甚至可以将其设置为最终位置,从而使代码更易于推理。

直接的答案是“这是不受欢迎的,除非您需要存储几乎无限多样的值”

您需要两个以上的值吗?如果不是,考虑布尔值。如果是,考虑枚举。如果需要接近无穷多的值,可以使用字符串


如果您选择使用字符串,那么您的程序仍然可以完美地工作。但是,请始终记住,在代码增加复杂性的每一个地方,出错的机会都会更多,并且在将来会带来可维护性方面的挑战。

String
可以接受多少值?可能
String
不是合适的类型。看起来您的代码是“stringtyped”。为什么不使用布尔值呢?我已经删除了一些“硬编码字符串”焦点;还可以删除更多。问题可能是关于大多数任何类型的,问题是相同的:“在声明字段时,最好不要[指定]默认值,而是在设置字段的if语句中添加else?”在我的特定情况下,我将文本发送到XML文件中。所以使用布尔值是不可能的。你说“以后在一个方法中”,这意味着“不在构造函数中”,所以请记住,你的字符串实际上有三个可能的值:“Y”,“N”和null.+1用于阅读问题。
if (isCold) {aBusinessSwitch = "Y"; }
  else {aBusinessSwitch = "N"; }