C#中Java Class的等价物是什么?

时间:2015-01-21 03:38:58

标签: java c#

特别是我指的是这段代码,我试图理解它在Class对象方面的作用。

在下面的代码中,Class是什么意思?它与C#中的'Type'相同吗?

isSuperTypeOf()方法在“类型”方面做了什么?他们编写方法的方式我不知道哪个'type'属性是哪个。

本文档中的代码来源 Dynamic Object Model

class PropertyType {

protected String name;

protected Class type;

protected boolean isMandatory;

...

public String getName() {

return name;

}

public boolean isSupertypeOf(Class type) {

return type.isAssignableFrom(type);

}

public boolean isValidValue(Object value) {

// check value, possibly delegate to a strategy

}

...

}

2 个答案:

答案 0 :(得分:4)

  

Class是什么意思?它与C#中的Type相同吗?

是的,.NET的System.Type与Java java.lang.Class非常接近。

  

isSuperTypeOf()方法在Class type方面做了什么?

isSuperTypeOf方法为isAssignableFrom方法提供了一个包装器。它在C#中的等价物,System.Type的{​​{3}}方法毫不奇怪。

Java的Class和.NET的Type之间的最大区别可能是Class在它所代表的类型上是泛型,而Type不是通用类。这种差异背后的原因与Java和.NET的泛型实现方式的不同有关:Java的实现基于类型擦除,因此Class具有通用性提供了某些好处,在.NET的实现方案下是不必要的。

答案 1 :(得分:1)

是的,C#中最接近的类比是Type。从某种意义上说,它代表了关于对象类型的元数据。但是,Java和C#反射机制之间存在许多差异。