2017-03-05 100 views
-1

我創建了一個堆類,如下所示,我的目的是初始化堆棧中類型E的元素的大小。春天無法注入'java.lang.Class

應該怎麼注入這個類?

但是彈簧拋出如下錯誤,我該如何解決這個問題?在堆疊構造的

@Service 
public class Stack<E> { 

    int MAX_SIZE = 15; 

    E[] elements; 



    @SuppressWarnings("unchecked") 
    Stack(Class<E> clazz) { 
     elements = (E[]) Array.newInstance(clazz, MAX_SIZE); 
    } 

    volatile int i; 

    public void push(E e) throws InterruptedException { 
     while (i > MAX_SIZE) { 
      Thread.currentThread().wait(); 
     } 
     elements[i++] = e; 
     Thread.currentThread().notifyAll(); 
    } 

    public E pop() throws InterruptedException { 
     while (i < 0) { 
      Thread.currentThread().wait(); 
     } 
     Thread.currentThread().notifyAll(); 
     return elements[i--]; 
    } 

} 

參數0所需類型的bean的java.lang.Class中「不能被發現。

+0

你可以添加你的bean配置文件。 – 2017-03-05 12:27:56

+0

added @Autowired \t java.lang.Class clazz;導致空指針異常。如何通過構造函數注入? – Curious

+1

你爲什麼要重新發明輪子?使用LinkedBlockingDeque。順便說一句,即使你真的想要你自己的實現,它不應該擴展線程,它不應該需要一個類作爲參數。只需使用Object []來存儲元素。 –

回答

0

包括0參數的構造

public Stack(){ 

}