Tôi bị cám dỗ để làm loại đó của mã, sử dụng jGraphTTrong Java, có cách nào để xác định rằng một cuộc tranh cãi thực hiện hai giao diện
/*
interface DirectedGraph<V,E> { ...}
interface WeightedGraph<V,E> { ...}
*/
public class SteinerTreeCalc {
public SteinerTreeCalc(< ??? implements DirectedGraph<V,E>, WeightedGraph<V,E> > graph) {
......
}
}
Tôi muốn tạo ra một constructor mà yêu cầu một đối tượng thực hiện hai giao diện.
Cập nhật: lớp
Trong mục tiêu của tôi, có được đã chọn cho Vertex và Edges (V và E), nhưng cảm ơn rất nhiều cho những người đưa ra:
public class SteinerTreeCalc <V, E, T extends DirectedGraph<V, E> & WeightedGraph<V, E>>
{
....
}
Tôi giả sử bạn có lý do chính đáng để không đặt tên giao diện vừa là 'DirectedGraph' và 'WeightedGraph', để bạn có thể nhận được tất cả các bit của hợp đồng mà người dùng của' SteinerTreeCalc' được yêu cầu hỗ trợ ở một nơi? –
Tốt nhất! JgraphT không cung cấp giao diện như vậy là cả DirectedGraph và WeightedGraph, và người dùng có thể không muốn sử dụng giao diện/lớp tùy chỉnh của tôi. Tôi không thực sự hiểu tại sao họ không cung cấp giao diện này. – jwinandy