Tag: 方法重载

使用可选参数冲突重载的方法

我有两个重载的方法,一个具有可选参数。 void foo(string a) { } void foo(string a, int b = 0) { } 现在我打电话给: foo("abc"); 有趣的是,第一个重载被调用。 为什么不把第二个重载与可选值设置为零? 说实话,我会期待编译器带来一个错误,至less是一个警告,以避免无意中执行错误的方法。 这是什么原因? 为什么C#团队这样定义呢?

Java是否支持默认参数值?

我遇到了一些具有以下结构的Java代码: public MyParameterizedFunction(String param1, int param2) { this(param1, param2, false); } public MyParameterizedFunction(String param1, int param2, boolean param3) { //use all three parameters here } 我知道在C ++中,我可以给参数分配一个默认值。 例如: void MyParameterizedFunction(String param1, int param2, bool param3=false); Java支持这种语法吗? 有没有任何理由为什么这两个步骤的语法是可取的?

正确地从一个List <Integer>中移除一个Integer

这是我遇到的一个不错的陷阱。 考虑一个整数列表: List<Integer> list = new ArrayList<Integer>(); list.add(5); list.add(6); list.add(7); list.add(1); 任何教育猜测当你执行list.remove(1)会发生什么? 怎么样list.remove(new Integer(1)) ? 这可能会导致一些令人讨厌的错误。 在处理整数列表时,区分remove(int index)和remove(Object o) (删除通过引用删除元素remove(Object o)的正确方法是什么? 这里要考虑的要点是提到的@Nikita之一 – 确切的参数匹配优先于自动装箱。

函数通过返回types重载?

为什么没有更多的主stream静态types语言支持通过返回types重载函数/方法? 我想不出有什么办法。 它似乎没有比通过参数types支持超载更有用或更合理。 它怎么不那么受欢迎?

方法重载null参数

我已经添加了三个参数的方法: public static void doSomething(Object obj) { System.out.println("Object called"); } public static void doSomething(char[] obj) { System.out.println("Array called"); } public static void doSomething(Integer obj) { System.out.println("Integer called"); } 当我调用doSomething(null) ,编译器会将错误列为不明确的方法 。 那么是因为Integer和char[]方法还是Integer和Object方法?

JavaScript中的函数重载 – 最佳实践

在Javascript中伪造函数重载的最好方法是什么? 我知道这是不可能的在Javascript中重载函数,如其他语言。 如果我需要两个使用foo(x)和foo(x,y,z)这是最好的/首选的方法: 首先使用不同的名称 使用可选参数,如y = y || 'default' y = y || 'default' 使用参数数目 检查参数的类型 或者如何?