2013-11-27 18 views
5

Trong đoạn mã sau, tôi nhận được một lỗi từ trình biên dịch trên dòng cuối cùng có nội dung: 'Danh sách kiểu không rõ ràng' (trên dòng xác định danh sách cgxHist). Tôi đang làm gì sai?Lỗi 'không rõ ràng' trong Java là gì?

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>(); 

Tôi thực sự muốn danh sách chứa các số nguyên, nhưng khi tôi cố gắng để 'đúc' danh sách như vậy, bằng cách thay thế <String> với <int>, lỗi trên dòng đó trở thành 'Lỗi cú pháp được tấm vé về 'int', Kích thước dự kiến ​​sau mã thông báo này '. Xin tư vấn.

+1

Bạn không thể sử dụng '', như Generics don không hỗ trợ các kiểu nguyên thủy. Xem, ví dụ: [câu hỏi này] (http://stackoverflow.com/questions/2721546/why-dont-java-generics-support-primitive-types) để biết thêm thông tin. – Mac

+0

xem điều này cũng http://stackoverflow.com/questions/36325277/why-does-system-out-printlnnull-give-the-method-printlnchar-is-ambiguo –

Trả lời

5
java.awt.List 

java.util.List 

Cả hai loại này đều tồn tại. Bạn sẽ có thêm không gian tên ở phía trước để sử dụng một trong:

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

Nếu bạn không, nó không biết làm thế nào để giải thích các List<T>: là nó awt một hoặc util không? Ergo: mơ hồ.

+0

Cảm ơn sự giúp đỡ. – user2671186

12

Vấn đề là có một lớp List ở cả java.awtjava.util gói, và như bạn đang nhập khẩu tất cả các lớp học trong những gói, trình biên dịch không biết cái nào bạn có ý nghĩa.

Vì vậy, bạn nên hoặc không sử dụng dấu hoa thị để nhập khẩu tất cả các lớp học cùng một lúc (chỉ nhập khẩu những người bạn thực sự cần) hoặc thay List ghi java.util.List<String> cgxHist = new ArrayList<String>();

+0

Cảm ơn bạn rất nhiều. Tôi đang học, nhưng đó là một quá trình rất chậm. – user2671186

+0

Điều này chỉ trả lời một nửa câu hỏi. Vấn đề khác là các nguyên thủy không thể được sử dụng với Generics - OP sẽ phải sử dụng '' thay vì ''. – Mac

Các vấn đề liên quan