Java 中重载函数很常见,比如JDK 中的的FileInputStream构造方法就有重载:
FileInputStream(File file)
FileInputStream(String name)
但是有时候会出现如下问题:
报错信息为:The method write2File(boolean, File) is ambiguous for the type TestOverride
出现该问题的场景是:重载的两个函数中有实参为null,java编译器没法确定此处的null是指File还是String,所以就报编译错误了。
如何解决呢?明确地执行此处null的类型,代码如下:
- package com.test;
- import java.io.File;
- public class TestOverride {
- public static void write2File(boolean isWrite2File, File file) {
- }
- public static void write2File(boolean isWrite2File, String filepath) {
- }
- public static void main(String[] args) {
- File file=null;
- write2File(false, file);
- }
- }