繁体   English   中英

从arrayList继承的类的toString方法

[英]toString methode for class inherrited from arrayList

我正在做一些自然语言处理,因此实现了一个Sentence类,基本上是一个带有一些元信息的ArrayList。 我想写覆盖它的toString()方法,该方法只是粘贴用空格分隔的字符串。 我通过使用继承的get方法使其工作,但是我想知道是否有可能和更好(就效率和编码实践而言)直接访问字段。

这是我班的简化版:

public class Sentence extends ArrayList<String> {
    int sentimentScore;
    String Speaker;

    @Override
    public String toString(){
        StringBuilder sb = new StringBuilder();
        for(int i =0; i < super.size(); i++){
            sb.append(super.get(i));
            sb.append(" ");
        }
        return sb.toString();
    }

最好使用get()方法。 在速度方面,它不会降低代码的速度(如果您不这么认为,则应在坚持这一信念之前编写一个小程序来演示速度下降的影响)。 更重要的是, ArrayList不公开其内部字段,这是一个很好的设计。 如果维护者决定更改ArrayList的内部实现,则此设计会将任何将来的副作用屏蔽给其他人(扩展它的子类)。

顺便说一句,您可能还需要考虑一种替代设计-而不是让Sentence 扩展 ArrayList ,而是让Sentence 包含 ArrayList 这就是所谓的继承原则。

摘自Wikipedia: https : //zh.wikipedia.org/wiki/Composition_over_inheritance

面向对象编程中的继承之上的 组合 (或复合重用原理 )是这样的原理,即类应通过其组合(通过包含实现所需功能的其他类的实例)实现多态行为和代码重用,而不是从基类或父类继承类。 这是OOP经常陈述的原则,例如在有影响力的设计模式中:“从'类继承'到从'对象组成'的偏爱”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM