2013-04-01 57 views
0

我已经实现了一个通用队列(在java中)可以很好地处理不同的数据类型,但是当我尝试使用引用类型实例化队列时,编译器出现“超出界限”错误; Queue<Node<T>> myQueue = new Queue<Node<T>>(); 这是我实现的一部分:一个具有参考数据类型的泛型队列

public class Queue<F extends Comparable<? super F>> 
{ 
    private static class QueueNode<F extends Comparable<? super F>> 
    { 
     private F data; 
    private QueueNode<F> next; 

    public QueueNode() 
    { 
     next = null; 
    } 
    public QueueNode(F val) 
    { 
     data = val; 
     next = null; 
    } 
    } 
    private QueueNode<T> head, rear; 
    public Queue() 
    { 
     head = rear = null; 
    } 
    public boolean isEmpty() 
    { 
    } 
    public void enqueue(F el) 
    { 
    } 
    public F dequeue() 
    { 
    } 
} 

我有一个在节点方面实现二叉树,且此队列中的二叉树类中的方法之一使用。任何人都可以帮助我发现问题并解决它! 好的,这正是编译器所说的: 队列> myQueue = new Queue>(); “类型自变量节点不是类型的边界变量F内” “其中T,F是典型值变量: Ť延伸可比类BinarySearchTree声明 F的延伸可比类队列声明”

+1

什么是确切的编译器错误消息队列?请将其添加到您的问题。 –

+0

没有'节点'扩展'可比较的>'? –

+1

只要'T'没有实际的类,就不能像这样定义一个'Queue'(类本身之外)。 'T'必须用_real_类替换。 Node是否通用?如果不是,'队列 myQueue = new Queue ();'应该就好了。 – skirsch

回答

0

myQueue声明应该使用而不是T

例如:要创建的String

Queue<Node<String>> myQueue = new Queue<Node<String>>(); 
相关问题