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
,比如说,使用线程
。或日期
。或字符串
。任何事,真的。。。因此,您必须为编译时错误抛出运行时异常。真的,最好在编译时捕获这些。你是对的。我将使用重载方法路线。谢谢你的帮助!我没有投反对票,但是我认为你是对的模板类可能是一个过度的杀伤力。我将使用方法重载。谢谢你的回复!我没有投反对票,但是我认为你是对的模板类可能是一个过度的杀伤力。我将使用方法重载。谢谢你的回复!