Bài giảng Lập trình Java - Bài 5: Kiểu chung

Lỗi lập trình (bug), thường xuyên gặp trong quá trình phát

triển phần mềm, ñược chia làm hai loại:

• Lỗi khi dịch (compile-time bugs): Các trình dịch có thể chỉ ra

các lỗi này và lập trình viên phải sửa (debug) trước khi phần

mềm chạy ñược.

• Lỗi khi chạy (runtime bugs): Lỗi không thể phát hiện ñược

khi dịch mà chỉ ñược phát hiện khi chạy.

• Một trong những nguyên nhân gây lỗi khi chạy là sử dụng SAI

KIỂU.

• Kiểu tổng quát ñược ñưa vào java nhằm phát hiện các lỗi sử dụng

sai kiểu ngay khi dịch.

pdf6 trang | Chuyên mục: Java | Chia sẻ: dkS00TYs | Lượt xem: 2109 | Lượt tải: 0download
Tóm tắt nội dung Bài giảng Lập trình Java - Bài 5: Kiểu chung, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
Lê ðình Thanh, Kiểu chung
Lê ðình Thanh
Bộ môn Mạng và Truyền thông Máy tính
Khoa Công nghệ Thông tin
Trường ðại học Công nghệ, ðHQGHN
Bài giảng
LẬP TRÌNH JAVA
Lê ðình Thanh, Kiểu chung
Kiểu chung
Bài 5
Lê ðình Thanh, Kiểu chung
Nội dung
• Các lỗi lập trình
• Kiểu chung
• Phương thức chung
Lê ðình Thanh, Kiểu chung
Lỗi lập trình
• Lỗi lập trình (bug), thường xuyên gặp trong quá trình phát
triển phần mềm, ñược chia làm hai loại:
• Lỗi khi dịch (compile-time bugs): Các trình dịch có thể chỉ ra
các lỗi này và lập trình viên phải sửa (debug) trước khi phần
mềm chạy ñược.
• Lỗi khi chạy (runtime bugs): Lỗi không thể phát hiện ñược
khi dịch mà chỉ ñược phát hiện khi chạy.
• Một trong những nguyên nhân gây lỗi khi chạy là sử dụng SAI 
KIỂU.
• Kiểu tổng quát ñược ñưa vào java nhằm phát hiện các lỗi sử dụng
sai kiểu ngay khi dịch.
Lê ðình Thanh, Kiểu chung
Ví dụ về lỗi khi chạy
public class Box { 
private Object object; 
public void add(Object object) { this.object = object; } 
public Object get() { return object; } 
} 
public class BoxDemo1 { 
public static void main(String[] args) {
Box abox = new Box(); 
abox.add("10"); 
Integer anotherbox = (Integer) abox.get();
System.out.println(anotherbox ); 
}
} 
Exception in thread "main" java.lang.ClassCastException: 
java.lang.String cannot be cast to java.lang.Integer at 
BoxDemo1.main(BoxDemo1.java:6) 
Lê ðình Thanh, Kiểu chung
Kiểu chung – Generic Type
public class Box { 
private T object; 
public void add(T object) { this.object = object; } 
public T get() { return object; } 
} 
public class BoxDemo2 { 
public static void main(String[] args) {
Box abox = new Box();
abox.add(new Integer(10)); 
Integer anotherbox = abox.get();
System.out.println(anotherbox); 
}
} 
Lê ðình Thanh, Kiểu chung
Kiểu chung
• Kiểu ñược sử dụng như một tham số
public class Box { …}
Box abox = new Box();
Lê ðình Thanh, Kiểu chung
Phát hiện lỗi nhờ kiểu chung
public class Box { 
private T object; 
public void add(T object) { this.object = object; } 
public T get() { return object; } 
} 
public class BoxDemo3 { 
public static void main(String[] args) {
Box abox = new Box();
abox.add("10");
Integer anotherbox = (Integer) abox.get();
System.out.println(anotherbox); 
}
} 
BoxDemo3.java:5: add(java.lang.Integer) in 
Box cannot be applied to 
(java.lang.String) abox.add("10"); 
^ 1 error 
Lê ðình Thanh, Kiểu chung
Phương thức chung
• Là phương thức có tham số kiểu chung
public void inspect(U u){
System.out.println("U: " + u.getClass().getName()); 
} 
public static void fillBoxes(U u, List> boxes) { 
for (Box box : boxes) { box.add(u); } 
} 
Crayon red = ...; 
List> crayonBoxes = ...; 
Box.fillBoxes(red, crayonBoxes); //hoặc
Box.fillBoxes(red, crayonBoxes); 
Lê ðình Thanh, Kiểu chung
Tham số kiểu ñược giới hạn
• Là phương thức có tham số kiểu chung
public void inspect(U
u){
System.out.println("U: " + u.getClass().getName()); 
} 
abox.inspect("some text"); 
Box.java:21: inspect(U) in 
Box cannot be applied to 
(java.lang.String) abox.inspect(“some text"); 
^ 1 error 
Lê ðình Thanh, Kiểu chung
Tiếp theo
Các lớp thiết yếu

File đính kèm:

  • pdfBài giảng Lập trình Java - Bài 5_Kiểu chung.pdf
Tài liệu liên quan