[英]In Java, how can I implement new functionality in a subclass of a Deque class without access to the private fields in the Deque class?
[英]How can I access to the private fields of Java LinkedList Nodes?
我必须实现一个棋盘游戏,它有17个位置,并且像链接列表一样被“链接”。
因此,我打算为此使用ArrayList的LinkedList。 ( LinkedList<ArrayList<String>>
或其他...)
但是,它有两个起始位置,这些起始位置在几个节点之后合并,玩家可以选择要从哪个位置开始。(这意味着两个节点的“下一个”字段指向一个节点,并且一个节点可以(但不是必须的,我猜吗?)需要两个“上一个”字段。)
另外,我想在最后一个位置点旁边指向另一个节点的“下一个”字段。
简而言之,我想要一个类似于LinkedList的集合类,但有一些变化。
我怎么能做到这一点?
我的编程水平是初学者到中级,并且我在LinkedList定义中进行了研究,类似于Java Collections Framework(但不记得很多),以及使用教科书的c ++ std :: list。
所以我的问题是这些。
我是否有必要实现一个简单的List(和Node)类,仅创建18个Nodes并按照我想设置的方式设置这些节点的私有字段,并将ArrayLists添加到其“ data”字段中?
另外,我将使用Stack的LinkedList(因为我只需要使用最新推送的元素),但是我觉得如果只创建私有ArrayList类并根据自己的喜好对其进行调整(类似于实现Stack的方式)可能会更有用。使用ArrayList类。 听起来如何?
我担心的是我不是一个很好的程序员,如果我自己定义它们,它们可能会变得不可靠,并且工作可能也很耗时。
有没有更好的方法来实现这一目标?(例如,可能扩展标准类?不确定。)
任何建议的话将不胜感激。
谢谢。
恐怕您对您要做什么的描述(即您的要求)很难理解。 因此,我将自己局限于一般性回答。
如果您确实确实需要能够对类似列表的数据结构进行“手术”,那么您应该自己/从头开始实施它。
尝试通过扩展现有列表/集合类来执行此操作可能会由于以下两个原因而失败(至少)。
您的代码需要修改的一些内容被声明为private
,这使得对其进行修改非常困难(并且非常不建议)。 (这不是不可能的,但是您需要做一些讨厌的反射技巧,这会使您的代码复杂,脆弱和低效。除非绝对没有其他选择,否则这不是您应该做的事情。)
即使您成功了,您也将拥有一个名义上实现一个或多个现有集合接口的数据结构,但是(很可能) 违反了该接口应该如何工作的约定 。
我担心的是我不是一个很好的程序员,如果我自己定义它们,它们可能会变得不可靠,并且工作可能也很耗时。 (有截止日期)
无论如何,我的建议是尝试以正确的方式进行操作。
如果您未能按时完成任务,那么您仍然可以找到看起来不错的代码,并且应该(希望这样做)进行相应的标记。
另一方面,如果您尝试以错误的方式执行此操作,则可能会得到一个有效的程序,但仍会以错误的方式对其进行打标。 而且,如果您在尝试正确编写代码时失败了,则可能会失败,并被标记为更糟。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.