Java 字符串和创建对象哪个更有效
我创建了两个对象,它们只接受一个私有字符串字段和各自的getter和setter。此对象是不可变的,仅用于存储单个字符串 e、 gJava 字符串和创建对象哪个更有效,java,Java,我创建了两个对象,它们只接受一个私有字符串字段和各自的getter和setter。此对象是不可变的,仅用于存储单个字符串 e、 g 我的问题是,对于大多数用例,使用标准对象字符串而不是创建的对象国家/地区是否更有效?如果有其他属性,如时区、快捷码等,稍后将添加到国家/地区类中 如果您确定永远只有一个属性,那么该类是完全冗余的。只要在任何地方使用字符串作为属性即可。如果有其他属性,如时区、快捷码等,稍后将添加到Country类中 如果您确定永远只有一个属性,那么该类是完全冗余的。只要在任何地方使用
我的问题是,对于大多数用例,使用标准对象字符串而不是创建的对象国家/地区是否更有效?如果有其他属性,如时区、快捷码等,稍后将添加到国家/地区类中
如果您确定永远只有一个属性,那么该类是完全冗余的。只要在任何地方使用字符串作为属性即可。如果有其他属性,如时区、快捷码等,稍后将添加到Country类中
如果您确定永远只有一个属性,那么该类是完全冗余的。只要在任何地方使用字符串作为属性即可。如果您确定对象将包含单个字符串属性 和 您对此属性没有任何限制(例如,不允许在此字符串中使用数字或限制长度) 选择Sting而不是自定义对象 原因?
当我说:如果你对这个属性没有任何限制,使用自定义对象,我的意思是,虽然这些限制也可以在没有自定义对象的情况下设置,但是如果你在自定义对象中这样做,如果您确信您的对象将包含单个字符串属性,则不必重复代码,这样会更有效。 和 您对此属性没有任何限制(例如,不允许在此字符串中使用数字或限制长度) 选择Sting而不是自定义对象 原因?
当我说:如果你对这个属性没有任何限制,那么使用自定义对象。我的意思是,虽然这些限制也可以在没有自定义对象的情况下设置,但是如果你在自定义对象中这样做,那么从这个意义上说,你就不必重复代码了。首先,您的国家/地区课程不是一成不变的。你可以称之为
setName
方法以后更改它。要保持不变,它必须看起来像
这:
回答您的问题:是的,只有字符串更有效 没有包装器类。使用包装器类,每个类有两个对象 国家,没有它,只有一个 但是您可能仍然需要包装类,原因有两个:
void doSomething(Country country);
void doSomething(String country);
第一个只接受国家对象,因此很难滥用。这个
第二个接受任何类型的字符串,但您仍然必须确保
只传递正确的国家名称。
在第一种情况下,编译器可以帮助您避免错误;在第二种情况下
它不能健壮性也是值得的。首先,你的国家级不是一成不变的。你可以称之为
setName
方法以后更改它。要保持不变,它必须看起来像
这:
回答您的问题:是的,只有字符串更有效 没有包装器类。使用包装器类,每个类有两个对象 国家,没有它,只有一个 但是您可能仍然需要包装类,原因有两个:
void doSomething(Country country);
void doSomething(String country);
第一个只接受国家对象,因此很难滥用。这个
第二个接受任何类型的字符串,但您仍然必须确保
只传递正确的国家名称。
在第一种情况下,编译器可以帮助您避免错误;在第二种情况下
它不能健壮性也是值得的。如果您只打算将其用作字符串,那么是的,将其包装在自己的类中是不必要的开销。您的Country对象不是不可变的。与您的问题无关,但如果
setName
具有公共访问权限,则您的类不是不可变的。使用immutable,我试图说类型Country将永远不会被动态修改(反射)。如果您只将其用作字符串,那么是的,将其包装在自己的类中是不必要的开销。您的Country对象不是不可变的。与您的问题无关,但是如果setName
具有公共访问权限,则您的类不是不可变的。使用immutable,我试图说类型Country永远不会被动态修改(反射)第一种方法只接受国家对象,所以很难误用这就是为什么我从这个方法开始
void doSomething(Country country);
void doSomething(String country);