Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C代码的Java等价物_Java_C#_Reflection - Fatal编程技术网

C代码的Java等价物

C代码的Java等价物,java,c#,reflection,Java,C#,Reflection,我正试图将我的一些非常古老的C.NET2.0代码重写成Java。程序很简单,但我偶然发现了这一部分,我不知道如何转换成java: public ISomething listContainsType(Type typeToCheck) { foreach(ISomething obj in _List) if (obj.GetType() == typeToCheck) return obj; return

我正试图将我的一些非常古老的C.NET2.0代码重写成Java。程序很简单,但我偶然发现了这一部分,我不知道如何转换成java:

public ISomething listContainsType(Type typeToCheck) {
        foreach(ISomething obj in _List)
            if (obj.GetType() == typeToCheck)
                return obj;

        return null;
    }
所以,上面的代码遍历列表时只知道每个元素实现了ISomething,并检查哪个类实际实现了所述接口。至少,这就是.NET2.0的工作原理

上面代码的Java等价物是什么

我知道上面几行代码都有这种味道,但在重构之前,我想按原样重写它,这样我就可以使用相同的测试方法来测试最终产品。

Java的等效类型是。除此之外,基本上是一样的:

public ISomething listContainsType(Class<?> typeToCheck) {
    for (ISomething obj : _List)
        if (obj.getClass() == typeToCheck)
            return obj;
    return null;
}

为了锻炼身体,我尝试了以下方法:

static public ISomething listContainsType(Class<?> typeToCheck) {
    for (ISomething obj : _List) 
         if (Arrays.stream(obj.getClass().getInterfaces()).anyMatch(typeToCheck::equals))
        return obj;

    return null;
}
可以这样称呼它:listContainsType Serializable.class


编辑:@shmosel的代码测试类是否属于给定类型。我的代码测试它是否实现了给定的接口。你想要哪个版本取决于你的需要。检查查看类直接或间接实现的所有接口的代码实现。

StackOverflow不是代码翻译服务。你试过什么?
static public ISomething listContainsType(Class<?> typeToCheck) {
    for (ISomething obj : _List) 
         if (Arrays.stream(obj.getClass().getInterfaces()).anyMatch(typeToCheck::equals))
        return obj;

    return null;
}