如何在Java中编写重载函数

用户名

我不知道要使以下重载功能正常工作会缺少什么?

例如

List<?> list = ...;
for (Object element : list)
  Fun(element);

public void Fun(Integer element) { ... }
public void Fun(String element) { ... }
public void Fun(MyClass element) { ... }
迈克·塞缪尔(Mike Samuel)

Java使用双调度-编译器根据参数类型在重载方法中进行选择,然后,在运行时,JVM根据的运行时类型在方法的实现(替代)中进行选择this

您正在提供多个重载,但是Java不会自动在它们之间切换。它寻找可以接受的重载,但(Object element)找不到任何重载,因此编译器拒绝了您的程序。

解决此问题的一种方法是拥有运行时分派方法:

public void Fun(Object element) {
  if (element instanceof Integer) { Fun((Integer) element); }
  ...
}

之所以可行,是因为其静态类型非常笼统,并且Fun使用类型更具体的参数类型进行调用,因此将其分配给其他重载。

经常使用instanceof经常被认为是反模式。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类常见问题

如何在Rust中编写函数?

来自分类Dev

如何在C ++中编写哈希函数?

来自分类Dev

如何在PostgreSQL的函数中编写WITH(CTE)

来自分类Dev

如何在MoonScript中编写递归函数?

来自分类Dev

如何在ASP.NET中编写函数重载和对象调用

来自分类Dev

如何在Powershell中编写函数以创建函数

来自分类Dev

如何在Haskell中编写showIt函数?

来自分类Dev

如何在Vim中编写`tabline`函数?

来自分类Dev

如何在Vim中编写`tabline`函数?

来自分类Dev

如何在Java中编写传递类名的函数?

来自分类Dev

如何在JavaScript ECMA6中重载构造函数?

来自分类Dev

如何在PhpStorm中编写函数注释?

来自分类Dev

如何在python中执行构造函数重载?

来自分类Dev

如何在Python中动态重载函数?

来自分类Dev

如何在Python中动态重载函数?

来自分类Dev

如何使用--noImplicitAny编写函数重载?

来自分类Dev

如何在递归函数中编写矩阵?

来自分类Dev

如何在C中重载函数?

来自分类Dev

如何在C中编写链接其他函数的函数

来自分类Dev

如何在MoonScript中编写递归函数?

来自分类Dev

如何在php中编写bann函数?

来自分类Dev

我如何在重载函数中包含和重载函数

来自分类Dev

如何在Vim中编写`tabline`函数?

来自分类Dev

如何在Java中编写传递类名的函数?

来自分类Dev

如何在汇编中编写交换函数?

来自分类Dev

如何在php中编写soapclient函数?

来自分类Dev

如何在VBA中编写最大函数?

来自分类Dev

如何在 R 中编写汇总函数?

来自分类Dev

如何在marklogic中编写java脚本查找函数?