我已經看到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