我已经看到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的设计一样,显示如下
似乎#2,它会更好只是做'if(x = null)'而不是添加参数。 –
@MikeG:这取决于你希望用x做什么。如果您需要了解x的类型,则不能调用x.getClass,如果x为null,instanceof将始终返回false。 – StriplingWarrior