java - 按类型参数对泛型类的对象进行排序

标签 java generics

我制作了一个非常简单的泛型类,它存储 2 个相同类型的变量,如下所示:

public MyClass<T>
{
    private T v1;
    private T v2;

    public MyClass(T v1, T v2)
    {
      this.v1 = v1;
      this.v2 = v2;
    {
 }

现在我需要通过另一个非泛型类实现一种方法,该方法将不同类型的对象列表作为输入,并给出 MyClass<T> 的列表作为输出。与相同类型的情侣。

我的问题是,在不知道我正在使用什么类型的情况下,我无法找到一种方法来制作这样的东西,如何实例化正确的 MyClass 类型每次? 我已经走到这一步了,没有从 eclipse 中得到错误

public List<MyClass<?>> match()
{
    List<MyClass<?>> list = new ArrayList<MyClass<?>>();

    for(Object obj : this.list)//not the same list it's a parameter of the
    {                     //non-generic class
        for(Object obj2 : this.list)
        {
            if(!(obj == obj2)&&obj.getClass().equals(obj2.getClass()))
            {
                MyClass<Object> couple = new MyClass<Object>(obj, obj2);
                insertCouple(couple, list);
            }
        }
    }

insertCouple是一个私有(private)方法,用于检查这对夫妇是否已经在输出列表中,我尝试实现 ComparableMyClass但使编码变得更加复杂。

正如你所看到的,我被迫保持通用,但我可以看到它存在问题。 如果没有一种方法可以在运行时查找并填充特定类型,我该如何编写它才能通过泛型实现?

最佳答案

您无法决定在运行时创建哪种类型的 MyClass 对象(取决于匹配对象的类),因为所有泛型类型都会在编译时被删除。您可以在以下位置阅读有关类型删除的更多信息:

http://docs.oracle.com/javase/tutorial/java/generics/erasure.html

关于java - 按类型参数对泛型类的对象进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16712763/

相关文章:

c# - 从表达式函数获取属性

java - 使用scanner/reader/bufferedreader读取文本文件以读取.txt文件中的数字

java - 访问camel路由中bean中设置的属性/值

java - 在 Resteasy + Netty 服务器上实现跨源资源共享(CORS)

c++ - 多态性中的通用 STL 迭代器

java - Spring通用服务

java - 层次结构和泛型

java - JApplet & KeyListener

java - Flume 拦截器在读取时忽略输入 CSV 文件头

c# - 设计流畅的界面方法