【发布时间】:2018-04-16 18:43:14
【问题描述】:
假设您有一个创建数字列表的类。您可以在任何位置添加数字或删除数字。如果我创建该类的两个实例 listA 和 listB 我可以对这两个类执行相同的操作。但是,如果我执行以下操作:
List<Integer> listA = new PositionList<>();
Position<Integer> a = listA.add(1);
Position<Integer> b = listA.add(7);
List<Integer> listB = new PositionList<>();
b = listB.add(7);
listA.remove(b)
我不会从 listA 中删除 b,因为该变量现在指向 listB 实例。我正在编写一个方法,该方法应该确保正在操作的任何变量都指向我指定的实例。对于listA.remove(b),我会确保b 指向我添加到listA 中的7。有没有办法检查这个?我知道解决方法是一开始就不要这样做,但是如果我无法进行这些更改,我需要弄清楚如何去做。
【问题讨论】:
-
看来
PositionList<>实现了List<Integer>,在这种情况下listA.add(1)应该返回boolean,而不是Position<Integer>。你有一个不同的界面,对吧? -
老实说,我已经多次阅读您的问题,但我无法理解您在问什么。
-
@lexicore 抱歉,我对此有点陌生,很难准确地表达我的意思。我想知道的是如何测试
listA or listB这两个列表中的哪一个是b指向的变量。我知道它指向 listB,但我想用代码测试它。isInstance()或getClass()之类的东西,如果存在的话。 -
@Alex 请解释一下“指向”的确切含义。
-
@lexicore 我的意思是
b = listA.add(7);引用了我添加到listA 中的整数7。在b = listB.add(7);之后,它现在引用添加到listB 的整数7。我写了listA.remove(b)来说明如果我尝试从listA 中删除b,它实际上会将它从listB 中删除,因为那是b现在“指向”的地方
标签: java pointers collections