如何检查在接口列表上使用了哪个实现

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