29
2020
11

下面的代码哪些地方会产生编译错误?

class Outer {

    class Inner {

    }

    public static void foo() {

        new Inner();

    }

    public void bar() {

        new Inner();

    }

    public static void main(String[] args) {

        new Inner();

    }

}

 

注意:Java中非静态内部类对象的创建要依赖其外部类对象,上面的面试题中foo和main方法都是静态方法,静态方法中没有this,也就是说没有所谓的外部类对象,因此无法创建内部类对象,如果要在静态方法中创建内部类对象,可以这样做:

 

new Outer().new Inner();  

 

● Java中的反射

 

说说你对 Java 中反射的理解

 

Java中的反射首先是能够获取到Java中要反射类的字节码,获取字节码有三种方法,

 

Class.forName(className)。

 

类名.class。

 

this.getClass()。然后将字节码中的方法,变量,构造函数等映射成相应的Method、Filed、Constructor等类,这些类提供了丰富的方法可以被我们所使用。

« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。