2016-10-27 14 views
10

Trong ứng dụng Boot mùa xuân của tôi, cho rằng tôi có giao diện trong Java:mùa xuân: có được tất cả Đậu của giao diện nhất định và loại

public interface MyFilter<E extends SomeDataInterface> 

(một ví dụ điển hình là mùa xuân của public interface ApplicationListener < E mở rộng ApplicationEvent>)

và tôi có vài hiện thực như:

@Component 
public class DesignatedFilter1 implements MyFilter<SpecificDataInterface>{...} 

@Component 
public class DesignatedFilter2 implements MyFilter<SpecificDataInterface>{...} 

@Component 
public class DesignatedFilter3 implements MyFilter<AnotherSpecificDataInterface>{...} 

Sau đó, trong một số đối tượng tôi đang quan tâm để sử dụng tất cả các bộ lọc mà thực hiện MyFilter < SpecificDataInterface>nhưng KHÔNG MyFilter < AnotherSpecificDataInterface>

Điều gì sẽ là cú pháp cho việc này?

Trả lời

24

Sau đây sẽ tiêm mỗi cá thể MyFilter có loại mở rộng SpecificDataInterface làm đối số chung vào Danh sách.

@Autowired 
private List<MyFilter<? extends SpecificDataInterface>> list; 
+0

Tôi không nghĩ rằng bạn có nghĩa là để đưa "= new ArrayList <>();" vào cuối :) –

+0

Chính xác của bạn, tôi đã xóa nó :). Thông tin bổ sung: Nó sẽ vẫn hoạt động với nó. –

4

Bạn có thể chỉ cần sử dụng

@Autowired 
private List<MyFilter<SpecificDataInterface>> filters; 
Các vấn đề liên quan