Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 对于我来说,有没有可能有一个方法可以同时使用HashMap或list作为参数?_Java_List_Methods_Parameters_Hashmap - Fatal编程技术网

Java 对于我来说,有没有可能有一个方法可以同时使用HashMap或list作为参数?

Java 对于我来说,有没有可能有一个方法可以同时使用HashMap或list作为参数?,java,list,methods,parameters,hashmap,Java,List,Methods,Parameters,Hashmap,我有一个如下所列的函数: private static void getNumberOfBrowsers(Collection<?> tcName){ } private static void GetNumberOfBrowser(集合名称){ } 对我来说,是否有可能有一个只接受一个参数的方法,但它可以是HashMap或List?这是可能的,但它几乎肯定是一个非常糟糕的主意。它们的共同类是对象: private static void getNumberOfBrowser

我有一个如下所列的函数:

 private static void getNumberOfBrowsers(Collection<?> tcName){
 }
private static void GetNumberOfBrowser(集合名称){
}
对我来说,是否有可能有一个只接受一个参数的方法,但它可以是
HashMap
List

这是可能的,但它几乎肯定是一个非常糟糕的主意。它们的共同类是
对象

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){
}
private static void getNumberOfBrowsers(映射tcName){
}
私有静态void GetNumberOfBrowser(列出tcName){
}

旁注:我使用了上面的
Map
,而不是
HashMap
。通常,除非您有充分的理由需要特定类型的东西,否则最好对接口进行编码。

这是可能的,但几乎肯定是一个非常糟糕的主意。它们的共同类是
对象

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){
}
private static void getNumberOfBrowsers(映射tcName){
}
私有静态void GetNumberOfBrowser(列出tcName){
}


旁注:我使用了上面的
Map
,而不是
HashMap
。通常,除非您有充分的理由需要特定类型的东西,否则最好对接口进行编码。

您也可以使用模板类。然而,这可能是一种过度的杀伤力。重载将更简单

public class Box<T> {
   // T stands for "Type"
   private T t;

   public void set(T t) { this.t = t; }
   public T get() { return t; }
}
公共类框{
//T代表“类型”
私人T;
公共无效集(T){this.T=T;}
公共T get(){return T;}
}

示例来源:

您也可以使用模板类。然而,这可能是一种过度的杀伤力。重载将更简单

public class Box<T> {
   // T stands for "Type"
   private T t;

   public void set(T t) { this.t = t; }
   public T get() { return t; }
}
公共类框{
//T代表“类型”
私人T;
公共无效集(T){this.T=T;}
公共T get(){return T;}
}

示例来源:

您将如何使用这种方法?你会如何看待其中的论点?你想解决的问题是什么?最好有两个方法,重载,并将公共功能分解成一个方法,这两个方法都调用,您会如何处理这样的方法?你会如何看待其中的论点?你想解决的问题是什么?最好有两个方法,重载,并将公共功能分解成一个都可以调用的方法!我可以选择重载的方法路线,但为什么使用对象是个坏主意呢?我可以用intanceOf进行一些验证,以检查我是否得到了我应该纠正的东西?@SahilGupta:如果你使用
Object
,我可以调用
getNumberOfBrowsers
,比如说,使用
线程
。或
日期
。或
字符串
。任何事,真的。。。因此,您必须为编译时错误抛出运行时异常。真的,最好在编译时捕获这些。你是对的。我将使用重载方法路线。谢谢你的帮助!令人惊叹的!我可以选择重载的方法路线,但为什么使用对象是个坏主意呢?我可以用intanceOf进行一些验证,以检查我是否得到了我应该纠正的东西?@SahilGupta:如果你使用
Object
,我可以调用
getNumberOfBrowsers
,比如说,使用
线程
。或
日期
。或
字符串
。任何事,真的。。。因此,您必须为编译时错误抛出运行时异常。真的,最好在编译时捕获这些。你是对的。我将使用重载方法路线。谢谢你的帮助!我没有投反对票,但是我认为你是对的模板类可能是一个过度的杀伤力。我将使用方法重载。谢谢你的回复!我没有投反对票,但是我认为你是对的模板类可能是一个过度的杀伤力。我将使用方法重载。谢谢你的回复!