30/09/2018, 19:33
Warning [rawtype] found raw type: trong Java
pacpkage edu.application;
import java.util.Vector;
public class NewClass {
public static void main(String[] args) {
Vector vt = new Vector();
}
}
Chương trình của mình chạy bình thường, mà trên IDE Netbeans nó hiện ra mấy cái warning (tam giác màu vàng có chấm thang ) nội dung như sau:
- Ở dòng import thư viện: Obsolete collection
- Ở dòng tạo đối tượng vt: [rawtype] found rawtype: Vector missing type arguments for generic class Vector…
Khi bấm Hint thì nó khuyên là Configure “Obselete Collection”. Cả 2 luôn.
Java expert nào vào fix cho minh với !
Bài liên quan
Theo ngu ý của mình thì chắc nó nói kiểu vector đã lỗi thời và khuyên nên xài kiểu khác - arraylist chẳng hạn?
em đổi thành:
Vector<String> vt = new Vector<String>();
sẽ hết warning, có thể thay String bằng 1 Class khác tùy mục đíchVector là class generic và cấu trúc của nó là:
nến khi khai báo nó nên như vậy
E có thể là type bất kỳ: String, Integer…
Khai báo như em không xảy ra lỗi complie error nhưng có thể xảy ra runtime error.
Lý do như sau:
Khai báo như thế mọi dữ liệu em add vào nó điều hiểu là kiểu object. như vậy mỗi khi em cần lấy bất kỳ giá trị nào trong vt thì em cần phải ép kiểu. Giả sử list của em chỉ muốn chứa dữ liệu kiểu String, nhưng có 1 phân tử nào đó kiểu Interger đã được add trước đó, khi ép kiểu sẽ bị lỗi runtime:
thanks 2 anh @nguyenhuuca , @CuongNguyen em đã fix đc warning rawtype.
Nhưng nó xuất hiện một warning mới là Obsolete Collection ( Collection lỗi thời). Anh cho em hỏi dạng này hiện nay dùng như thế nào mà nó kêu lỗi thời vậy ?
Đó là vì các method của vector là synchronize, và hầu hết là không cần thiết dùng đến.
Em nên chuyển sang dùng List vd:
List<String> list = new ArrayList<String>();
Em hiểu rồi ! thanks anh nhiều