通用列表中的唯一类

帕特里克·马

我有一个带有通用列表的通用类。我想确保通用列表仅包含唯一的类。

到目前为止,我所做的是将类名与反射(getClass())进行比较。但是我认为这不是一个干净的解决方案。有什么更好的做法可以检查吗?

public class MyGenericClass<T extends MyGenericClass.MyInterface> {
  private List<T> members = new ArrayList<>(0);

  public void add(T t) {
    final boolean[] classInMembers = {false};

    members.forEach(member -> {
      if (member.getClass().getName().equals(t.getClass().getName())) {
        classInMembers[0] = true;
      }
    });

    if (!classInMembers[0]) {
      members.add(t);
    }
  }

  public interface MyInterface {
    void doSomething(String text);
  }
}
public class Main {
  public static void main(String[] args) {
    MyGenericClass<MyGenericClass.MyInterface> myGenericClass = new MyGenericClass<>();

    myGenericClass.add(new Performer1());
    myGenericClass.add(new Performer2());
    myGenericClass.add(new Performer3());
    myGenericClass.add(new Performer3()); // should not be inserted!
  }

  private static class Performer1 implements MyGenericClass.MyInterface {
    @Override
    public void doSomething(String text) {
      text = "Hi, I am performer 1!";
    }
  }

  private static class Performer2 implements MyGenericClass.MyInterface {
    @Override
    public void doSomething(String text) {
      text = "Hi, I am performer 2!";
    }
  }

  private static class Performer3 implements MyGenericClass.MyInterface {
    @Override
    public void doSomething(String text) {
      text = "Hi, I am performer 3!";
    }
  }
}
理查德·沃尔顿

您可以继承java.util.Set接口的实现。子类化java.util.AbstractSet可能是最简单的

默认情况下,“设置”将按对象的.equals()方法比较对象-在您的情况下,这还不够。您将需要重写该contains方法,以确保仅添加唯一类的实例。

在您的重写中contains,比较类实例而不是字符串化的包名称可能是相同/容易的

即使用a.getClass() == b.getClass(),而不是a.getClass().getName()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

jQuery,以相同顺序设置的jQuery唯一类列表?

来自分类Dev

仅在一类中设置通用类型

来自分类Dev

仅在一类中设置通用类型

来自分类Dev

Python3中的唯一类实例

来自分类Dev

Python将唯一类对象添加到列表

来自分类Dev

D3js中每个元素的唯一类或ID

来自分类Dev

当BeautifulSoup中没有唯一类时提取数据

来自分类Dev

D3js中每个元素的唯一类或ID

来自分类Dev

带有 Amasty 插件的 Magento 1 中的唯一类别/品牌 URL

来自分类Dev

一类特定实例的可变列表

来自分类Dev

删除列表中的项目反映同一类的其他列表。为什么?

来自分类Dev

C ++唯一类名称与命名空间

来自分类Dev

Python:检查每个用户的唯一类别

来自分类Dev

Beautifulsoup是否可以选择非唯一类

来自分类Dev

如何为lambda创建唯一类型?

来自分类Dev

更改具有非唯一类的div的内容

来自分类Dev

Junit检查唯一类数组的相等性

来自分类Dev

如何从<span>中刮取一些没有唯一类标识符的文本?

来自分类Dev

一类中的Java锁定对象

来自分类Dev

同一类中的模拟方法

来自分类Dev

调用同一类中的方法

来自分类Dev

一类中的Java锁定对象

来自分类Dev

调用同一类中的方法

来自分类Dev

一类内Java多级集合(列表)中的复杂数据结构

来自分类Dev

尝试访问同一类中的二维列表时出现`AttributeError`(python)

来自分类Dev

如何在 django 中创建来自同一类别的帖子列表

来自分类Dev

如何使 jQuery 函数迭代取自同一类中的 2 个列表的单独数组?

来自分类Dev

提取唯一类型及其计数,并使用索引键存储在数据框中

来自分类Dev

当他们谈论“唯一类型”和“ LLVM中的类型是唯一的”时,他们在说什么?

Related 相关文章

热门标签

归档