【问题标题】:define a class that returns an ArrayList定义一个返回 ArrayList 的类
【发布时间】:2015-12-08 10:05:57
【问题描述】:

我创建了一个返回项目 Hashmap 的类:

public class PaymentMap implements Serializable, Map<String, PaymentItem>

但随着我的工作,我的生活变得比它需要的更困难。该类只需要是一个 ArrayList。所以我将类定义为:

public class Payments implements Serializable, Collection<PaymentItem>{

这行得通。抱歉在发帖前没有做足够的搜索。

但我得到了错误:

ArrayList类型不能是Payments的超接口,超接口必须是接口。

我做了一些搜索,但不知道如何定义类语句。

【问题讨论】:

  • 您可以删除您的问题,删除按钮在编辑按钮旁边。不过不要夸大这个问题。
  • 一个类不返回任何东西,它是一些具有方法和属性集合的对象的表示。当一个类实现某些东西时,那个“东西”必须是一个接口,这样做你就声称这个类是那个接口的类型。
  • @Bill 如果您希望返回一个 ArrayList,那么(getter 或其他)方法可能是最简单的。如果您希望拥有一组更独特的行为,您可能会选择子类/私有类,它可以implement or extend 其他接口。我一般不会每天创建太多interfaces,而是专注于类来创建具有独特属性和行为的对象。

标签: java xpages


【解决方案1】:

使用接口List创建你的类

public class Payments implements Serializable, List<PaymentItem> {

    List<PaymentItem> payments = new ArrayList<PaymentItem>();

}

您的 Payments 类必须具有由接口 List 定义的所有方法。

自动创建:

  • 点击“付款”一词
  • 点击菜单“Source / Generate Delegate Methods...”

您可以在构造函数和自己的方法中设置payments'元素。
您的类 Payments 将作为 ArrayList&lt;PaymentItem&gt; 对外作出反应,并在内部使用来自 payments 的值。

【讨论】:

  • 把它变成了一个集合,这很有效。我现在一切正常。我真的不需要HashMap,在这种情况下,它只是使整个过程复杂化。一份清单可能会更好。
【解决方案2】:

ArrayList 不是接口,您无法实现它。 ArrayList 是 List 接口的具体实现。

当你说你创建了一个返回 HashMap 的类时,你是指方法吗??

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-15
    • 2016-02-22
    相关资源
    最近更新 更多