繁体   English   中英

Java:如何创建实现抽象接口的泛型类的实例?

[英]Java: How to create an instance of a generic class that implements an abstract interface?

现在,我试图创建一个通用类BTree<T>的实例,该实例实现一个接口SSet<T> ,该接口又实现Iterable<T>我已经从BTree<T>删除了大部分代码类,只保留构造函数。 不过,如果有必要,我可以在有人认为有帮助的情况下添加整个代码。 BTree<T>类看起来像这样:

package assignment2_draft;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import java.util.SortedSet;
import java.util.TreeSet;

public class BTree<T> implements SSet<T> {

    //Some methods

    public BTree(int b, Class<T> clz) {
    this(b, new DefaultComparator<T>(), clz);
    }

}

在我自己的类中,我试图调用BTree<T>类并将Integer传递给泛型。 在我的课堂上,我有:

BTree<Integer> myTree=new BTree<Integer>(Integer.class);

以前曾在通用类中工作过,但没有此类。 我想知道,我传递的参数正确吗? 还是在创建SSet<T>的实例时需要以某种方式引用BTree<T>

您的构造函数签名为BTree(int, Class<T>)

所以看来您需要做类似的事情

SSet<Integer> tree = new BTree<Integer>(2, Integer.class);

请注意,该引用是SSet<>而不是BTree<> -如果需要,可以在其中使用BTree<>引用,但通常最好对接口进行编程,除非您有理由不这样做。

您在上面提供的构造函数接受两个值

public BTree(int b, Class<T> clz) {
this(b, new DefaultComparator<T>(), clz);
}

但您只提供一个,

BTree<Integer> myTree=new BTree<Integer>(Integer.class);

你有其他构造函数吗,如果没有,请使用以下命令

int a=5; 
SSet<Integer> myTree=new BTree<Integer>(a,Integer.class);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM