相关疑难解决方法(0)

getDeclaredMethods()在Java 7与Java 8中的表现不同

考虑以下小例子:

package prv.rli.codetest;

import java.lang.reflect.Method;

public class BreakingInterfaces  {
    interface Base {
        BaseFoo foo();
        interface BaseFoo {           
        }
    }

    interface Derived extends Base {
        DerivedFoo foo();
        interface DerivedFoo extends BaseFoo {

        }
    }

    public static void main(String[] args) {       
        dumpDeclaredMethods(Derived.class);
    }

    private static void dumpDeclaredMethods(Class<?> class1) {
        System.out.println("---" + class1.getSimpleName() + "---");
        Method[] methods = class1.getDeclaredMethods();
        for (Method method : methods) {
            System.out.println(method);
        }
        System.out.println("----------");
    }
}
Run Code Online (Sandbox Code Playgroud)

如果使用jdk1.7.0.55编译上面的示例,则输出为:

 ---Derived---
public abstract BreakingInterfaces$Derived$DerivedFoo BreakingInterfaces$Derived.foo()
----------
Run Code Online (Sandbox Code Playgroud)

但是当使用jdk1.8.0.25时,输出是:

---Derived---
public abstract prv.rli.codetest.BreakingInterfaces$Derived$DerivedFoo prv.rli.codetest.BreakingInterfaces$Derived.foo() …
Run Code Online (Sandbox Code Playgroud)

java java-8

13
推荐指数
1
解决办法
1002
查看次数

标签 统计

java ×1

java-8 ×1