实例化使用<foo extends =“”bar <foo =“”>&gt; </foo>的通用对象

时间:2013-11-24 01:48:26

标签: java generics

我正在使用泛型创建B + Tree类。这是我的类声明和构造函数的开头:

/**
 * B+ Tree generic type
 *
 * @author Sofian Benaissa
 */
public class BplusTree<K extends Comparable<K>,V>
    {

    private static int maxKeys = 10;
    private Node<K> root;
    private Node<K> currentLeaf;

    /**
     * Default Constructor
     */
    public BplusTree()
    {  
        root = new Node<K>(null, 0);
        currentLeaf = root;
    }

我在这里创建了一个关于这个类的完整源代码的要点:https://gist.github.com/sfyn/7622365

接下来我试图在另一个文件中实例化这个类。这一行:

private BplusTree<String><String>;

在构造函数中跟随此行:

bptree = new BplusTree<String><String>();

编译时抛出这些错误:

src/FileParser.java:30: error: <identifier> expected
        private BplusTree<String><String> bptree;
                                 ^
src/FileParser.java:30: error: <identifier> expected
        private BplusTree<String><String> bptree;
                                       ^
src/FileParser.java:30: error: <identifier> expected
        private BplusTree<String><String> bptree;
                                               ^
src/FileParser.java:39: error: '(' or '[' expected
                bptree = new BplusTree<String><String>();
                                              ^
src/FileParser.java:39: error: illegal start of expression
                bptree = new BplusTree<String><String>();
                                                       ^
5 errors

1 个答案:

答案 0 :(得分:4)

语法

private BplusTree<String><String> bptree;

不正确。

正确的语法是以逗号分隔的类型参数列表

private BplusTree<String, String> bptree = new BplusTree<String, String>(); /* or new BplusTree<>(); in Java 7 */