zoukankan      html  css  js  c++  java
  • 匹配算法重载方法

    (2.3.1附加信息)广泛

    Java overload resolution——匹配算法重载方法如下面:

    (1)找出全部可以调用的方法。

    可以调用的方法意味着形參个数等于实參个数,实參的类型可以转换为方法形參的类型。

    (2)假设实參与形參的类型可以直接相应。则运行该方法。

    (3)假设可以调用的方法仅仅有一个。则运行该方法。

    (4)可以调用的方法不止一个时,逐一作出推断:假设一个方法的类型签名都可以赋值给还有一个方法。则后者(类型大者)被排除;反复此操作,直到无法排除为止。【the Most Specific Method】

    (5)经过步骤(4),假设仅仅剩下一个方法。则运行该方法。或者编译器报错。


    可是。自己主动装箱和变长參数会使问题更复杂(还有import static 因素,在下一节2.3.2)。所以,大致了解一下就能够了。

    ①首先不考虑自己主动装箱和变长參数②再加上自己主动装箱再加上自己主动装箱变长參数


    样例1:有void m(Object )、void m(int[] )、m(int )方法,

            Object obj = null;
            m(obj);

    依照(2)调用m(Object )

    样例2:有void m(Object )、void m(int[] )、m(int )方法,

            m(null);

    依照(4),排除m(Object )后。调用void m(int[] )

    样例3:有void m(Object )、void m(int[] )、m(String )方法,

            m(null);

    依照(4),排除m(Object )后,void m(int[] )和m(String )无法排除。依照(5),编译报错。

    样例4:有void f(double,float )、void f(float , double )方法,

             f(12 ,9);

    依照(5),编译报错。

    样例5:有void f(double,float )、void f(float , double )和void f(double ,int )方法,

             f(12 ,9);

    依照(5),编译报错。f(double,float )- f(float , double )

    样例6:有void f(double,float )、void f(float , double )和void f(float,int )方法。

             f(12 ,9);

    依照(4), 调用f(float , int)



    http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.12





    版权声明:本文博客原创文章。博客,未经同意,不得转载。

  • 相关阅读:
    codeforces 1060 B
    codeforces 1060 A
    牛客 国庆七天乐 day1 L
    BZOJ 1087: [SCOI2005]互不侵犯King
    codeforces 792CDivide by Three(两种方法:模拟、动态规划
    codeforces 797C Minimal string
    codeforces 110E Lucky Tree
    codeforces 798D
    2017福建省赛 FZU2272~2283
    Android -- Looper、Handler、MessageQueue等类之间关系的序列图
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/4713799.html
Copyright © 2011-2022 走看看