Giả sử tôi có một lớp chung mà tôi sử dụng mà tuyên bố như thế này:Java generic đối tượng với nhiều giao diện đúc
public class ConfigurableRuleKey<R extends Configurable & Rule> extends Key<R> {
private final R rule
public ConfigurableRuleKey(R rule) {
this.rule = rule;
}
/* Additional methods are declared here */
}
Và tôi muốn thực hiện một phương pháp nhà máy để kiểm tra nếu quy tắc thông qua thực hiện giao diện Configurable
, khi tạo quy tắc cấu hình hoặc chỉ cần tạo một phím cơ bản:
public static <R extends Rule> Key<R> create(R rule) {
if (rule instanceof Configurable) {
return new ConfigurableRuleKey<>(rule); //This will not compile
} else {
return new RuleKey<>(rule);
}
}
vấn đề là trong phương pháp nhà máy của tôi, tôi không thể vượt qua quy tắc để xây dựng các ConfigurableRuleKey
bởi vì nó không phù hợp với những hạn chế chung tuyên bố (sự kiện nếu tôi muốn exp kiểm tra cẩn thận rằng nó thực hiện Configurable
). Câu hỏi đặt ra là làm cách nào để tôi có thể truyền đối tượng quy tắc của mình để nó phù hợp với các hạn chế của hàm tạo trong ConfigurableRuleKey
?
IDE của tôi cho tôi biết mã này sẽ không biên dịch nhưng thực tế nó có vẻ như vậy. :) Cảm ơn. Tôi nghĩ tôi sẽ báo cáo vấn đề này cho nhóm Hỗ trợ IDE của tôi. – SimY4
@ SimY4: Chỉ cần tò mò thôi, chỉ cần IDE phàn nàn về điều gì? – Dolda2000
Tôi đang sử dụng IntelliJ Idea 14 Xem trước quyền truy cập sớm – SimY4