我有一个类似下面列出的功能:
private static void getNumberOfBrowsers(Collection<?> tcName){
}
我是否可以使用只接受一个参数的方法,但它可以是HashMap<String, String>
或List<String>
?
答案 0 :(得分:2)
可能,但几乎肯定是一个非常糟糕的主意。那些共同的类是Object
:
private static void getNumberOfBrowsers(Object tcName){
// Need instanceof or similar here
}
相反,请考虑重载方法:
private static void getNumberOfBrowsers(Map<String, String> tcName){
}
private static void getNumberOfBrowsers(List<String> tcName){
}
旁注:我上面使用的是Map<String>
,而不是HashMap<String>
。通常,除非您有充分的理由要求特定类型的内容,否则最好对界面进行编码。
答案 1 :(得分:0)
您也可以使用模板类。然而,这可能是一种矫枉过正。重载会更简单。
public class Box<T> {
// T stands for "Type"
private T t;
public void set(T t) { this.t = t; }
public T get() { return t; }
}
示例来自:https://docs.oracle.com/javase/tutorial/java/generics/types.html