C代码的Java等价物
我正试图将我的一些非常古老的C.NET2.0代码重写成Java。程序很简单,但我偶然发现了这一部分,我不知道如何转换成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
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;
}