2013-11-27 17 views
5

W poniższym kodzie pojawia się błąd z kompilatora w ostatnim wierszu, który mówi: "lista typów jest niejednoznaczna" (w linii, która próbuje zdefiniować listę cgxHist). Co ja robię źle?Co to jest błąd "niejednoznacznego typu" w Javie?

import java.awt.*; 
import javax.swing.*; 
import java.util.*; 

public class drawr extends JPanel{ 

    public static int animationSpeed=470; 
    public static int diameter = 50; 
    hBod allHBods[]; 
    List<String> cgxHist = new ArrayList<String>(); 

I rzeczywiście chciał lista ma zawierać liczb całkowitych, ale gdy próbuję „cast” listę jako takiego, zastępując <String> z <int>, błąd na tej linii staje się „błąd składni na symboliczną«int», Wymiary oczekiwane po tym tokenie ". Porada proszę.

+1

nie można używać '' , jak don generycznych obsługuje typy pierwotne. Zobacz na przykład [to pytanie] (http://stackoverflow.com/questions/2721546/why-dont-java-generics-support-primitive-types), aby uzyskać więcej informacji. – Mac

+0

zobacz także http://stackoverflow.com/questions/36325277/why-does-system-out-printlnnull-give-teth-printlnchar-is-ambiguo –

Odpowiedz

5
java.awt.List 

java.util.List 

Oba te elementy istnieją. Musisz dodać nazw przed używać jednego:

java.util.List<String> cgxHist = new ArrayList<String>(); 

Jeśli nie, to nie wiem jak interpretować List<T>: jest to jeden awt lub util? Ergo: niejednoznaczny.

+0

Dzięki za pomoc. – user2671186

12

Problem polega na tym, że istnieje List klasa w obu java.awt a pakiet java.util, jak i importowane są wszystkie klasy w tych pakietach, kompilator nie wie, który z nich chodzi.

Więc powinien albo nie użyć gwiazdki zaimportować wszystkie klasy w tym samym czasie (wystarczy zaimportować te rzeczywiście potrzebne) lub zamiast List zapisu java.util.List<String> cgxHist = new ArrayList<String>();

+0

Dziękuję bardzo. Uczę się, ale to bardzo powolny proces. – user2671186

+0

To odpowiada tylko połowie pytania. Innym problemem jest to, że prymitywy nie mogą być używane z rodzajami - OP będzie musiał użyć '' zamiast ''. – Mac