java - 在类中委托(delegate) ArrayList

标签 java arraylist

我一直在创建一个Arraylist作为公共(public)类,因为这就是我被教导的方式。当我在另一个不带变量的文档中引用 Arraylist 的功能时,例如:get()remove()size() 等。这意味着我每次都必须在公共(public)类中创建它。我是否必须每次都添加代码,因为目前我正在尝试创建 size(),但需要一些帮助。

或者有没有办法让Arraylist功能正常,而不需要每次都添加行。该代码应该有助于解释我的意思:

import java.util.ArrayList;

public class Question1 {

    private ArrayList<Question1Entry> entries;

    public Question1() {
        entries = new ArrayList<Question1Entry>();
    }

    public void add( String name, String studentNumber, String courseName, String courseID, String houseNumber, String streetName, String town, String postcode ) {
        entries.add(new Question1Entry(name, studentNumber, courseName, courseID, houseNumber, streetName, town, postcode ));
    }

    public void remove (int index ) {
        entries.remove(index);
    }

    public Question1Entry get(int index) {
        return entries.get(index);
    }

    //The variable I need help creating 
    public Question1Entry size(int index) {
        return entries.size(index);
    }

    public String toString( ) {
        StringBuffer temp = new StringBuffer();
        for (int i = 0; i < entries.size(); ++i) {
            temp.append( entries.get(i).toString() + "\n" );
        }
        return temp.toString();
    }    
}

有没有办法避免添加 get()size() remove() 等?

谢谢:)

最佳答案

到目前为止您所使用的名为 delegation 。您可以继续重新创建每个方法并将其委托(delegate)给您的委托(delegate)对象(entries)。许多IDE都具有快速创建您需要的委托(delegate)方法的功能。

  • Intellij : 来源生成委托(delegate)方法

  • Eclipse:代码生成委托(delegate)方法

我还建议使用 inheritance就像 Mr. Polywhirl 的例子一样(尽管如果这个概念对您来说是新的,您也可以不使用泛型来实现)。最明显的好处是您只需定义一次方法,但真正的好处来自于将您的代码概括为适用于任何问题(而不仅仅是 Question1)。

关于java - 在类中委托(delegate) ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49797217/

相关文章:

java - 多人 2D 游戏中的数据结构 (Java)

java - ArrayList 比较并获取共享值

java - 如何修复 Java 中文本文件的写字板和记事本格式差异?

Java:流和 I/O 流之间的区别解释

java - 如何将 arraylist 传递到 onClick 的方法中

java - 如何访问对象内部的元素

java - 何时为列表创建迭代器?

.NET Action<T> 和 Func<T,U> 等的 Java 等价物

java - 实现抽象类 Java 的接口(interface)

java - 如何从PreparedStatement调用sql函数?