我只是想知道Java是否提供了允许以下内容的任何内容:
<Some List> list = new <Some List>;
Foo f = null;
list.add(f);
f = new Foo();
//Where this would be true
list.contains(f)
//As well as this (which is kind of implied by the contains call)
f == list.get(0)
据我所知,这不适用于任何Java列表。本质上,我问的是否有一个集合类型将根据其外部引用更新其内部元素。在上面的示例中,我希望如此设置&#39; f&#39;到新的Foo实例也会反映在列表条目中。这也意味着以下情况属实:
<Some List> list = new <Some List>;
Foo f = null;
list.add(f);
f = new Foo();
f.name = "banana";
//Where this would be true and not cause an NPE, as it does with List
f.name == list.get(0).name //Both would equal "banana"
这样的事情是否存在?
编辑:
为了澄清,添加到列表中的原始对象需要为空。然后更新该对象,该更新应反映在列表中。在上面的示例中,Foo变量首先是 null ,并且在它仍然为null时添加到列表中。添加之后,我将其设置为Foo的新实例。我想知道是否有一个列表类型,当我实例化Foo时,也会更新列表。
答案 0 :(得分:0)
回答关于包含问题的问题,请看这个例子
List<String> test = new ArrayList<String>();
String one = new String("one");
test.add(one);
one = new String("one");
System.out.println(test.contains(one));
它打印为真,为什么?因为String类重写equals和hash方法(From Object类,所有Class都从Object扩展)
如果你没有得到平等,那是因为你需要探测当你传递方法时,方法等于是真的。
答案 1 :(得分:0)
实现所需内容的最简单方法是将引用包装在另一个类中:
templateUrl: 'my.component.html'
styleUrls: ['my.component.css']