我已经看到了API的设计,它们有时会接受作为参数传递的类类型.
对于例如[a]:
class AClass {
//details
}
class Someclass {
public void someMethod(class klass, int num ) {
// some code
}
}
class client {
public static void main(String[] args) {
Someclass obj = new Someclass();
obj.someMethod(AClass.class, 10); // some sample use cases of client
}
}
现在在java中,如果可以从对象获取类类型,则根本不需要传递类,如下所述[b]
class AClass {
//details
}
class Someclass {
public void someMethod(AClass obj, int num ) {
// some code
}
}
class client {
public static void main(String[] args) {
Someclass obj = new Someclass();
AClass aclassObj = new Aclass();
obj.someMethod(aclassObj, 10);
}
}
我也可以改变someMethod()的参数并使用下面给出的[c]
public void someMethod(Object obj, int num ) {
if(obj instanceof AClass) {
//do something
}
}
那么我们何时应该选择[a]中所示的设计而不是[b]?是否有任何一般原则要考虑[a]中所示的设计.
PS:某些API的设计如下所示