特别是我指的是这段代码,我试图理解它在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
}
...
}
答案 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#反射机制之间存在许多差异。