栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Eclipse警告有关Java中私有静态嵌套类的综合访问器?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Eclipse警告有关Java中私有静态嵌套类的综合访问器?

您可以按照以下说明摆脱警告:

package com.example.bugs;public class WeirdInnerClassJavaWarning {    private static class InnerClass {        protected InnerClass() {}  // This constructor makes the warning go away        public void doSomething() {}    }    final private InnerClass anInstance;    {        this.anInstance = new InnerClass();         this.anInstance.doSomething();    }}

就像其他人所说的那样,Eclipse抱怨的是,除非通过Java编译器创建的综合方法,否则无法从外部实例化没有显式构造函数的私有类。如果使用代码,对其进行编译,然后使用jad(*)对其进行反编译,则会得到以下内容(重新格式化):

public class Test {  private static class InnerClass {    public void doSomething() {}    // DEFAULT ConSTRUCTOR GENERATED BY COMPILER:    private InnerClass() {}    // SYNTHETIC METHOD GENERATED BY THE JAVA COMPILER:        InnerClass(InnerClass innerclass) {      this();    }  }  public Test() {    anInstance.doSomething();  }  // Your instance initialization as modified by the compiler:  private final InnerClass anInstance = new InnerClass(null);}

如果添加受保护的构造函数,则不需要合成代码。我认为,使用公共或受保护的构造函数,从理论上讲,合成代码比非合成代码要慢很多。

(*)对于jad,我链接到了Wikipedia页面…托管此程序的域已过期,但Wikipedia链接到了一个我未测试过的域。我知道还有其他(可能是较新的)反编译器,但这是我开始使用的反编译器。注意:当反编译最近的Java类文件时,它会
发出抱怨 ,但是它仍然做得很好。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/437686.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号