Vui lòng xem ví dụ sau, lệnh gọi đầu tiên đến getMethod()
tạo Cảnh báo trong Eclipse. Cách thứ hai không hoạt động và không thành công với NoSuchMethodException
.Đối số của loại null phải được đúc thành Lớp <?> [] để gọi phương thức varargs
The argument of type
null
should explicitly be cast toClass<?>[]
for the invocation of the varargs methodgetMethod(String, Class<?>...)
from typeClass<Example>
. It could alternatively be cast to Class for a varargs invocation.
Tôi đã theo dõi cảnh báo và không còn hoạt động nữa.
import java.lang.reflect.Method;
public class Example
{
public void exampleMethod() { }
public static void main(String[] args) throws Throwable
{
Method defaultNull = Example.class.getMethod("exampleMethod", null);
Method castedNull = Example.class.getMethod("exampleMethod", (Class<?>) null);
}
}
Cuộc gọi thứ hai tạo ra lỗi này:
Exception in thread "main" java.lang.NoSuchMethodException:
Example.exampleMethod(null)
at java.lang.Class.getMethod(Class.java:1605)
at Example.main(Example.java:12)
Ai đó có thể giải thích hành vi này đối với tôi? Cách chính xác để tránh cảnh báo là gì?
Làm thế nào để một 'null' được đúc khác với một' null' chưa được phát hiện? Tôi không thể thấy điều này trong mã nguồn JDK. – codevour
Hãy nhìn vào bài đăng cập nhật. – StKiller