【问题标题】:How to choose between two method of the same name in Java如何在Java中的两个同名方法之间进行选择
【发布时间】:2012-05-03 20:18:28
【问题描述】:

我正在尝试访问我创建的类中的方法,但由于它的名称和参数数量相似,我的 IDE 说该方法不明确。下面是这两种方法的样机:

methodName(X, Y, Z)
methodName(A, Y, Z)

我调用了该方法,并为第一个参数传入了值null,以便进行测试。不幸的是,我无法以任何方式重命名方法、更改参数的顺序或修改方法的结构。有什么方法可以区分这两种方法吗?

【问题讨论】:

  • 找出是谁设计了该 API,了解他们的住所并烧毁他们的房子。
  • @alexg 我似乎记得以前打过这个,虽然我忘记了哪个 API;例如,它不太可能是 new Thread(null, "name")。
  • @alexg 既然问题是“我正在尝试访问我创建的类中的方法”,user1373493 可能会烧毁自己的房子或重新设计 API。
  • @alexg 重载实际上很常见,在 Java 中不一定是个大问题。这种问题只出现在没有类型的null (在某些情况下是自动装箱)。
  • @Bruno,每种类型都会出现这种情况T implements X, A

标签: java overloading


【解决方案1】:

将第一个参数转换为要调用的方法的第一个参数的类型,例如:

methodName((A) null, y, z);

【讨论】:

    【解决方案2】:

    你可以在对象上使用反射来获取方法列表吗?如果是这样,您可以显式调用与您相关的方法。我确实相信 Fivedigit 的答案可能会更好......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-23
      • 2020-05-17
      • 2013-09-12
      • 1970-01-01
      • 1970-01-01
      • 2019-10-09
      • 1970-01-01
      相关资源
      最近更新 更多