标题:关于可变参数重载,模糊导致编译失败问题
取消只看楼主
果沫
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:198
专家分:960
注 册:2013-1-30
结帖率:100%
已结贴  问题点数:20 回复次数:3 
关于可变参数重载,模糊导致编译失败问题
程序代码:
class test
{
    static void f (float a)
    {
        System.out.println("float");
    }
    static void f (Character a)
    {
        System.out.println("Character");
    }
}

public class Untitled
{
    public static void main(String[] args)
    {
        test.f ('a') ;
    }
}

如上的代码,编译没有问题,执行结果为:
float
//也就是说,编译器认为'a'更适合float
而如下代码:
程序代码:
class test
{
    static void f (float... a)
    {
        System.out.println("float");
    }
    static void f (Character... a)
    {
        System.out.println("Character");
    }
}

public class Untitled
{
    public static void main(String[] args)
    {
        test.f ('a') ;
    }
}

则提示编译错误,说参数'a'不明确,也就是说编译器分不清改传给哪个方法,但是上面的代码表示编译器认为比起Character,参数'a'更适合float,但是为什么到了可变参数的重载就说传参模糊,不知道该传给谁了呢?
2015-06-17 17:42
果沫
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:198
专家分:960
注 册:2013-1-30
得分:0 
回复 楼主 果沫
可是为什么可变参数....编译器不会这么思考
2015-06-18 15:20
果沫
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:198
专家分:960
注 册:2013-1-30
得分:0 
回复 4楼 hhwz
......我只是这么阐述,意思就是在单参数时,编译器知道将参数传给float,为什么在可变参数时同样的参数类型,编译器就无法确定该将参数传给谁
2015-06-18 17:53
果沫
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:198
专家分:960
注 册:2013-1-30
得分:0 
回复 6楼 hhwz
但是在单参数时,编译器能把参数传给float,为什么在可变参数时就不传给float了,如果说两种情况都出错那就没问题了,但是现在在单参数下可行,可变参数下不可行
2015-06-19 07:44



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-446708-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.543804 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved