我有可能拥有一个可以同时使用HashMap或列表作为参数的方法吗?

时间:2016-03-10 17:49:47

标签: java list methods parameters hashmap

我有一个类似下面列出的功能:

 private static void getNumberOfBrowsers(Collection<?> tcName){
 }

我是否可以使用只接受一个参数的方法,但它可以是HashMap<String, String>List<String>

2 个答案:

答案 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