【问题标题】:Java overloading a method with two parametersJava重载具有两个参数的方法
【发布时间】:2014-01-24 17:51:54
【问题描述】:

这个问题是关于重载方法的,我想我理解了基本思想,但我得到了一些奇怪的错误“Overloading.java:14”。 就像我的问题是我不知道如何返回我的方法的两个参数。所以我想也许可以用 toString() 转换带有两个 int 参数的方法,然后返回它。出了什么大错特错。 输出必须如下:

10

a 和 b 10、20

字符

结果 97

我的问题是“a and b 10, 20”,并没有做“char a”只是为了让你们知道。这不是家庭作业。 到目前为止,这是我的代码,其中包含一个主类和一个辅助类:

OverMain 类:

class OverMain {   
     public static void main(String args[]) {   
        Overload overload = new Overload();   
        int result;   
        System.out.println("a " + overload.test(10));  //prints a 10
            System.out.println("a and b " + overload.test(10, 20));  //the method I have trouble with
        result = overload.test('a'); //prints Result 97
        System.out.println("Result " + result);   
     }   
}  

重载类:

//The class which is suppose to overload test methods
class Overload {

  public int test(int a) {
    return a;
  }

  public String test(int a, int b) {
    String string = "";
       string = test(a, b).toString();
       return string;
  }

} 

【问题讨论】:

  • 您的test(int a, int b) 方法中有一个无限递归循环:它一直在调用自身,直到堆栈溢出。
  • 为什么你从test(int a, int b) 调用test(a, b) 那是无限递归
  • 所以你有一个 StackOverflow,然后用谷歌搜索“StackOverflow”,然后来到这个网站? :-) StackOverflow 意味着你有一个无限递归。
  • 请注意,您不能重载返回类型,至少在 Java 中是这样。
  • @Ingo 实际上你可以通过使其更具体(例如在子类中返回 String,而不是在基类中返回 Object)

标签: java overloading


【解决方案1】:

不清楚您要做什么,但您没有返回参数,我不认为重载是这里真正的问题。为了避免重载,您始终可以将方法更改为具有不同的名称 - 让它以这种方式工作,然后您可以随时将名称更改回来并解决任何冲突。

在你的情况下,我认为你只需要:

public String test(int a, int b) {
    return a + ", " + b;
}

换句话说,只需使用字符串连接和编译器将应用的自动intString 转换,以便使用字符串连接。

请注意,如果您的代码实际编译,您会遇到堆栈溢出,因为您从 test(int a, int b) 调用 test(a, b) - 它会永远调用自己,直到您用完堆栈空间。

【讨论】:

  • 我实际上尝试过,但忘记将“public String..”行从“public int...”更改。谢谢!
【解决方案2】:

问题出在你的方法test(int, int)

public String test(int a, int b) {

  String string = "";
  string = test(a, b).toString(); // Danger
  return string;
}
  • 你有一个永无止境的重复关系
  • 解决方案: return a + ", " + b

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多