Khi xây dựng một JavaBean, lệnh nào sau đây sai? public void setLength(int L)
{
if(L>0 && L!=length)
{
int oldValue=length, newValue=L; length=L;
pcs.firePropertyChange("length", oldValue, newValue); return L;
}
}
Trả lời:
Đáp án đúng: D
Đoạn code JavaBean có một số lỗi logic và cú pháp:
1. **Lỗi logic:**
* Trong thân lệnh `if`, sau khi gọi `pcs.firePropertyChange`, lệnh `return L;` sẽ làm phương thức kết thúc ngay lập tức. Điều này có nghĩa là, dù `L > 0 && L != length` là đúng, thì biến `length` vẫn được gán giá trị `L`, nhưng giá trị này sẽ không bao giờ được trả về. Phương thức `setLength` thường được thiết kế để trả về giá trị đã được gán (hoặc giá trị trước đó nếu việc gán không thành công), nhưng ở đây nó trả về giá trị mới _chỉ khi_ điều kiện `if` đúng.
2. **Lỗi cú pháp:**
* Kiểu trả về của phương thức là `void`, nhưng trong thân hàm lại có lệnh `return L;`. Vì `L` là kiểu `int`, nên việc trả về giá trị kiểu `int` trong một phương thức `void` là không hợp lệ.
Như vậy, Lệnh 6 sai vì đang cố gắng trả về một giá trị trong một phương thức `void`.





