【问题标题】:Creating a methods who's parameters are a class and a generic ArrayList创建一个参数是类和通用 ArrayList 的方法
【发布时间】:2013-04-01 07:32:27
【问题描述】:

在我的程序中,我复制并粘贴了代码(显然是禁止的),因为我还没有弄清楚如何将我想要的参数传递给这个方法:

public String collectionToFormattedString() {
    String combined = "";
    for (Book b : LibObj.books) {
        combined =  combined + b.toString() + "<br />";
    }
    combined = "<HTML>" + combined +"</HTML>";
    return combined;
}

我想传递参数来做以下事情:

public String collectionToFormattedString(Object? XYZ, ArrayList ABC) {
    String combined = "";
    for (XYZ b : ABC) {
        combined =  combined + b.toString() + "<br />";
    }
    combined = "<HTML>" + combined +"</HTML>";
    return combined;
}

我该怎么做?

【问题讨论】:

    标签: java class object methods arraylist


    【解决方案1】:

    你可以这样做:

    public <T> String collectionToFormattedString(T XYZ, List<T> ABC) {
        String combined = "";
        for (T b : ABC) {
            combined =  combined + b.toString() + "<br />";
        }
        combined = "<HTML>" + combined +"</HTML>";
        return combined;
    }
    

    编辑

    我刚刚意识到您甚至没有使用第一个参数,正如@rgettman 指出的那样,您没有使用任何特定于T 的操作,因此您可以将其简化为:

    public String collectionToFormattedString(final List<?> list) {
        StringBuilder combined = new StringBuilder("<HTML>");
        for (Object elem : list) {
            combined.append(elem.toString()).append("<br />");
        }
        combined.append("</HTML>");
        return combined.toString();
    }
    

    【讨论】:

    • 基于 OP 如何使用 XYZ,我认为这是在列表中指定该类类型的尝试。如果这是真的,你根本不需要这个参数。
    • @unholysampler:是的,我也意识到了这一点。 :)
    • T 没有什么特别之处:它没有被返回,也没有调用 T 特定的方法。可能是public String collectionToFormattedString(List&lt;?&gt; list) {for (Object elem : list) {
    【解决方案2】:
    public <T> String collectionToFormattedString(List<Book> XYZ) 
    {
        StringBuilder combined = new StringBuilder();
        combined.Append("<HTML>");
        foreach (Book b in XYZ)
        {
            combined.Append(b.ToString() + "<br />");
        }
        combined.Append("</HTML>");
    
        return combined;
    }
    

    从外观上看,您只需要制作一个书籍集合,然后传递该集合。如果您不喜欢列表,则可以使用带有增量器的 for 循环使用数组来完成。我喜欢字符串生成器,可以让你用它做一些花哨的事情,但是只需将一个字符串和 '+' 加在一起也可以。祝你好运。

    编辑:很抱歉这个帖子,当我在打字过程中被拉离办公桌时得到了回答。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-23
      • 1970-01-01
      • 2011-02-05
      • 1970-01-01
      • 1970-01-01
      • 2011-05-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多