java – 确定对象的类型
发布时间:2020-12-15 04:34:12 所属栏目:Java 来源:网络整理
导读:如果我有这种情况: interface Node {}class EmptyNode implements Node {}class NotEmptyNode implements Node {} 现在我有另一个班, class List { Node n;} 我正在尝试做的是找到一种方法来确定获取节点列表大小的方法.我已经有了逻辑: public int getSiz
如果我有这种情况:
interface Node {} class EmptyNode implements Node {} class NotEmptyNode implements Node {} 现在我有另一个班, class List { Node n; } 我正在尝试做的是找到一种方法来确定获取节点列表大小的方法.我已经有了逻辑: public int getSize(Node start) { if (start==EmptyNode) { //Can't do this,not sure how to check if its an empty Node return 0; } else { return 1 + getSize(start.next()); //Want to add 1 and move to next Node } } 由于EmptyNode和NotEmptyNode都是Node的类型,我知道我需要实现一个我可以在接口中编写的函数,该函数将在两个类中实现,并且能够计算列表末尾何时被命中. 解决方法
你在这里处理实例.这意味着您可以在节点接口中放置一个isEmpty()方法,并使用它来检查节点是否为空.
interface Node { boolean isEmpty(); } class EmptyNode implments Node { @Override public boolean isEmpty() { return true; } } class NotEmptyNode implements Node { @Override public boolean isEmpty() { return false; } } ... public int getSize(Node start) { if (start.isEmpty()) { ... } else { ... } } 另一个解决方案是让Node实现一个size()函数: interface Node { int size(); Node next(); } class EmptyNode implements Node { @Overide public int size() { return 0; } ... } class NotEmptyNode implements Node { @Overide public int size() { return 1 + next().size(); } ... } ... class List { Node n; public int getSize() { return n.size(); } } 哪个摆脱了if语句altogother. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- java – 为BST实现equals和hashcode
- 使用多线程处理对java数组进行分区和分析
- 如何在JLabel中调整Image / IconImage的大小?
- Java时区 – IST的奇怪行为?
- java – Swing GroupLayout:调整和限制组件大小
- 多线程 – Powershell Throttle通过作业完成多线
- 如何将Integer包装类传递给java中的方法?
- Java 中 String,StringBuffer 和 StringBuilder
- 获取Android设备屏幕宽、高、dpi密度及横竖屏等参
- java – 如何在HttpSessionListener中获取HttpSe
热点阅读