java中多个方法匹配时如何强制调用非最佳匹配方法

问题描述 投票:0回答:1

我知道如果有多个方法匹配,java会调用最佳匹配方法。参考下面的代码,是否可以在不修改方法签名的情况下强制调用非最佳匹配的方法?

public static class Example<T> {

    public static <T> Example<T> example(T data) {
        return null;
    }

    public static <T> Example<T> example(String msg) {
        return null;
    }

    public static <T> Example<T> example(String... args) {
        return null;
    }

    public static void example() {
        Example<?> msgExample = example("msg");

        // how to call `result(T data)` instead `result(String msg)` ?
        Example<String> dataExample = example("data");
        // working but required double casting
        Example<String> dataExampleByCasting = (Example<String>) ((Example<?>) example((Object) "data"));

        // how to call `result(String... args)` instead `result(String msg)` ?
        Example<?> argsExample = example("args");
        // working but required new array
        Example<?> argsExampleByNewArray = example(new String[]{"args"});
    }

}
java overloading
1个回答
0
投票

你不能调用“最差匹配”方法。

实现所需结果的唯一方法是您在代码末尾已经描述的方法,所以是的,您需要为方法调用创建一个新数组。

概括一下解决方案:您需要调整调用方法时提供的参数类型。这可能需要创建一个新数组,有时将您的对象转换为另一个数组就足够了。

© www.soinside.com 2019 - 2024. All rights reserved.