【问题标题】:Is this the best options to create a method that accepts a collection of any type?这是创建接受任何类型集合的方法的最佳选择吗?
【发布时间】:2019-08-21 16:26:02
【问题描述】:

我已经实现了一个接受任何类型的集合作为输入的方法。有没有更好的解决方案?

我正在使用泛型来解决这个问题;

我的解决方案使用这个作为参数(Collection<T> list)

我不确定是否有更好的选择。有更好的选择吗?,我的解决方案是一个不错的选择吗?

这是我的代码:

public static <T> boolean doTask(Collection<T> list){
    if(list == null)
        return false;
    else if(list.isEmpty()) return false;
    /* more code*/
    return true;
}

【问题讨论】:

  • 为什么项目要实现 Comparable?而且我认为“更多代码”永远不会被执行,也不会编译。
  • 完全同意,让我解决它
  • 这真的取决于你隐藏在“更多代码”后面的内容。但是代码显然与您的描述不符:并非所有类型都扩展 Comparable,并且您应该接受任何类型的集合。代码似乎也没有在任何地方使用泛型类型 T,那为什么方法是泛型的呢?
  • 好吧,我应该像这样使用方法: public static boolean doTask(Collection list){...}
  • 不应该是containsElements() ,考虑到它为空时返回false?

标签: java generics collections


【解决方案1】:

由于您根本不关心元素的类型,因此您可以使用? 作为类型。

static boolean containsElements(Collection<?> list) {
    return list != null && !list.isEmpty();
}

listnull 时不会评估list.isEmpty(),因为该术语已经为假,因此不会出现异常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-17
    • 2010-11-13
    • 1970-01-01
    • 2011-09-25
    • 2022-06-23
    • 2010-09-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多