我想扩展ArrayList来实现,但无法访问elementData private var

时间:2012-08-01 17:02:14

标签: java collections arraylist override extend

我想知道如何在indexOf()的子类中覆盖ArrayList方法。我需要对私有瞬态elementData var使用相同的访问权限。

如何解决我的设计?

编辑:这可能是一个有效的解决方案,将对elementData [i]的调用更改为类似的this.get(i)(实际上是允许的吗?)。它会破坏或破坏逻辑吗?

2 个答案:

答案 0 :(得分:5)

基本上你不应该。如果要创建一个行为方式与ArrayList不同,请使用组合ArrayList的私人详细信息是私有的,有充分理由;它们是实现细节,可能会在不同版本之间发生变化,而您的代码也不应该关心它们。

可能扩展ArrayList实际上是一种有效的方法,但不太可能是IMO。你还没有说出你真正想要实现的目标,只是阻止你实现目标如果你能告诉我们更多关于大局的信息,我们更有可能提供帮助。)

答案 1 :(得分:1)

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