Bạn không thể thực hiện việc này tại thời gian biên dịch trong Java. Tôi nghĩ rằng tốt nhất bạn có thể làm là cố gắng xác minh điều này trong thời gian chạy, bằng cách sử dụng phản ánh để làm một cái gì đó như:
public static <T> boolean hasDefaultConstructor(Class<T> cls) {
Constructor[] constructors = cls.getConstructors();
for (Constructor constructor : constructors) {
if (constructor.getParameterTypes().length == 0) {
return true;
}
}
return false;
}
Sau đó, bạn có thể gọi chức năng này bằng cách làm như sau:
hasDefaultConstructor(String.class) => true;
hasDefaultConstructor(Integer.class) => false;
Nếu hàm này trả về false, thì bạn biết rằng lớp sẽ không có hàm tạo mặc định và bạn có thể ném một ngoại lệ hoặc bất kỳ điều gì thích hợp cho ứng dụng của bạn.
Nguồn
2012-04-04 15:08:09
Câu hỏi hài hước về giao diện java ... Giao diện với hàm tạo .. :) –