如何检查在接口列表上使用了哪个实现
How to check which implementation is used on a List of an Interface
对 Java 很陌生,
我有一个 JGraphT 图表,其中员工作为节点,一个名为 "FeatureEdge" 的接口作为边。
我通过读取数据库来连接我的员工来创建一些边缘。
现在我想按边缘类型( Location- 或 Interestedge )导出我的边缘,但我不知道如何知道我的 List<FeatureEdge> list
边缘中的哪一个是哪种实现类型。
任何建议,我怎样才能得到一个类型?在 C++ 中,我会 dynamic_cast 我的列表的每个边缘到两种类型,并检查哪一种可以工作,但我不知道如何在 Java、
中做到这一点
图表:
public MultiGraph<Employee, FeatureEdge> graph = new Multigraph<>(FeatureEdge.class);
接口:
public interface FeatureEdge {}
实现:
public class LocationEdge implements FeatureEdge {
private String location;
public LocationEdge(String location){
this.location = location;
}
public String getLocation(){
return this.location;
}
}
public class InterestEdge implements FeatureEdge {
private int interestStrength;
public InterestEdge(int strength) {
this.interestStrength = strength;
}
public int getInterestStrength() {
return this.interestStrength;
}
}
只需使用一个getClass()
方法:
List<Integer> linkedList = new LinkedList<Integer>();
List<Integer> arrayList = new ArrayList<Integer>();
for (List<?> list : Arrays.asList(linkedList, arrayList)) {
System.out.println(list.getClass());
}
将打印
class java.util.LinkedList
class java.util.ArrayList
对 Java 很陌生, 我有一个 JGraphT 图表,其中员工作为节点,一个名为 "FeatureEdge" 的接口作为边。
我通过读取数据库来连接我的员工来创建一些边缘。
现在我想按边缘类型( Location- 或 Interestedge )导出我的边缘,但我不知道如何知道我的 List<FeatureEdge> list
边缘中的哪一个是哪种实现类型。
任何建议,我怎样才能得到一个类型?在 C++ 中,我会 dynamic_cast 我的列表的每个边缘到两种类型,并检查哪一种可以工作,但我不知道如何在 Java、
中做到这一点图表:
public MultiGraph<Employee, FeatureEdge> graph = new Multigraph<>(FeatureEdge.class);
接口:
public interface FeatureEdge {}
实现:
public class LocationEdge implements FeatureEdge {
private String location;
public LocationEdge(String location){
this.location = location;
}
public String getLocation(){
return this.location;
}
}
public class InterestEdge implements FeatureEdge {
private int interestStrength;
public InterestEdge(int strength) {
this.interestStrength = strength;
}
public int getInterestStrength() {
return this.interestStrength;
}
}
只需使用一个getClass()
方法:
List<Integer> linkedList = new LinkedList<Integer>();
List<Integer> arrayList = new ArrayList<Integer>();
for (List<?> list : Arrays.asList(linkedList, arrayList)) {
System.out.println(list.getClass());
}
将打印
class java.util.LinkedList
class java.util.ArrayList