Java 我想扩展ArrayList以实现但不能访问elementData私有变量

Java 我想扩展ArrayList以实现但不能访问elementData私有变量,java,collections,arraylist,overriding,extend,Java,Collections,Arraylist,Overriding,Extend,我想知道如何在ArrayList的子类中重写indexOf()方法。我需要使用与超级访问私有瞬态elementDatavar相同的方法 我如何解决我的设计 EDIT:将对elementData[i]的调用更改为类似的this.get(i)(这实际上是允许的)是否是有效的解决方案。它会以某种方式破坏逻辑吗?基本上,你不应该这样做。如果要创建一个与ArrayList不同的行为方式的集合,请改用composition。ArrayList的私有细节是私有的,有充分的理由;它们是可能在不同版本之间更改的实

我想知道如何在
ArrayList
的子类中重写
indexOf()
方法。我需要使用与超级访问私有瞬态
elementData
var相同的方法

我如何解决我的设计


EDIT:将对elementData[i]的调用更改为类似的this.get(i)(这实际上是允许的)是否是有效的解决方案。它会以某种方式破坏逻辑吗?

基本上,你不应该这样做。如果要创建一个与
ArrayList
不同的行为方式的集合,请改用composition。
ArrayList
的私有细节是私有的,有充分的理由;它们是可能在不同版本之间更改的实现细节,您的代码不应该关心它们


(扩展
ArrayList
实际上可能是一种有效的方法,但在我看来不太可能。你没有说你真正想要实现什么,只是说什么阻止了你实现它。如果你能告诉我们更多关于全局的信息,我们就更有可能提供帮助。)

你基本上不应该这样做。如果要创建一个与
ArrayList
不同的行为方式的集合,请改用composition。
ArrayList
的私有细节是私有的,有充分的理由;它们是可能在不同版本之间更改的实现细节,您的代码不应该关心它们



(扩展
ArrayList
可能实际上是一种有效的方法,但在我看来不太可能。你没有说你真正想要实现什么,只是说什么阻止了你实现它。如果你能告诉我们更多关于全局的信息,我们就更有可能提供帮助。)

你可以创建一个容器,它提供与ArrayList相同的方法,并且有一个ArrayList类型的字段(用于数据存储)。然后将所有ArrayList方法添加到容器类中,这些方法在ArrayList(字段)上执行相应的方法,但要覆盖的方法除外。

您可以创建一个容器,该容器提供与ArrayList相同的方法,并具有ArrayList类型的字段(用于数据存储)。然后将所有ArrayList方法添加到容器类中,容器类在ArrayList(字段)上执行相应的方法,但要覆盖的方法除外。

我正在为ArrayList做包装,以便使用不同的相等比较逻辑,如下所述:。但是我不想实现接口列表的700个方法。@user1352530在
列表中的方法远远少于700个。大多数IDE都会为您创建存根方法。将对elementData[i]的调用更改为类似的this.get(i)(这实际上是允许的)是否是有效的解决方案。它会破坏逻辑吗?当然会。或者,更好的是——不要使用不同的
equals()
逻辑来违反
列表
契约;相反,请编写一个方法,该方法接受一个
列表
和一个
对象
,并根据您的不同逻辑查找该对象的索引。我正在为我的Arraylist做一个包装,以便使用不同的相等比较逻辑,如下所述:。但是我不想实现接口列表的700个方法。@user1352530在
列表中的方法远远少于700个。大多数IDE都会为您创建存根方法。将对elementData[i]的调用更改为类似的this.get(i)(这实际上是允许的)是否是有效的解决方案。它会破坏逻辑吗?当然会。或者,更好的是——不要使用不同的
equals()
逻辑来违反
列表
契约;相反,写一个方法,它接受一个
列表
和一个
对象
,并根据您的不同逻辑找到该对象的索引。注释上的答案可以应用到这里。您描述的是合成模式。呃,没有看到注释--不用担心,这是一个好答案,但是这个社区比光还快!谢谢你的帮助!评论上的答案可以应用到这里,你描述的是构图模式。呃,没有看到评论--不用担心,这是一个好答案,但这种公共性比光快!谢谢你的帮助!