我有很多不同类型的对象的LinkedHashSets从一个java类传递到另一个java类,我是否将它们打包在一个更大的对象中(如果可能的话,另一个链接的哈希集)或者我只是在正常情况下传递它们作为参数的方式?
答案 0 :(得分:1)
是。例如:
LinkedHashSet<LinkedHashSet<String>>
答案 1 :(得分:1)
两者都有可能。
如果您将LinkedHashSet
打包到另一个LinkedHashSet
中,您可能会丢失类型信息,因为LinkedHashSet<LinkedHashSet<?>>
是收集所有类型的LinkedHashSet
的唯一方法地点。您也可以查看HashMap
,因为通常情况下您会尝试访问特定的子LinkedHashSet
;使用映射可以通过在公共类或接口中定义常量查找键来轻松实现。
如果在类之间总是传递相同的LinkedHashSet
,则参数或参数对象通常是更好的解决方案,因为它们提供类型信息。参数对象的类可能如下所示
public class Parameters {
private LinkedHashSet<String> namesSet = null;
private LinkedHashSet<Locale> localesSet = null;
public Parameters(LinkedHashSet<String> namesSet, LinkedHashSet<Locale> localesSet) {
this.namesSet = namesSet;
this.localesSet = localesSet;
}
public Parameters() {
}
public LinkedHashSet<String> getNamesSet() {
return namesSet;
}
public void setNamesSet(LinkedHashSet<String> namesSet) {
this.namesSet = namesSet;
}
public LinkedHashSet<Locale> getLocalesSet() {
return localesSet;
}
public void setLocalesSet(LinkedHashSet<Locale> localesSet) {
this.localesSet = localesSet;
}
}
参数对象的优点是它们使方法签名保持简短并且可以传递;在通过并发线程更改这些对象时要小心; - )。