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

IntelliJ可以自动创建装饰器类吗?

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

IntelliJ可以自动创建装饰器类吗?

更新//

我注意到IntelliJ具有用于生成委托方法的“生成”选项。创建一个新类:

public class MyDecoratorClass {    private MyInterfaceWithManyMethods myInterface;}

然后标记myInterface,转到“菜单”>“代码”>“委托方法”,选择要包装的所有方法,仅此而已。

//更新结束

您可以尝试“重构”->“用委派替换继承”重构。这样就应该能够做到。我称之为“使用Alt + Enter的代码”

转到要为其生成装饰器的界面。

public interface MyInterfaceWithManyMethods {    void method1();    void method2();    void method3();}

按Alt + Enter,选择“实现接口”,为装饰器命名,例如“ MyDecorator”。这给你

public class MyDecorator implements MyInterfaceWithManyMethods {    public void method1() {    }    public void method2() {    }    public void method3() {    }}

在新类中,选择类名称,然后选择“重构”->“用委派替换继承”,选择您的界面,勾选所有方法名称,然后按Enter。你会得到:

public class MyDecorator {    private final MyObject object = new MyObject();    public void method1() {        object.method1();    }    public void method2() {        object.method2();    }    public void method3() {        object.method3();    }    private class MyObject implements MyInterfaceWithManyMethods {        public void method1() {        }        public void method2() {        }        public void method3() {        }    }}

手动删除内部类和对象初始化器。你得到:

public class MyDecorator {    public void method1() {        object.method1();    }    public void method2() {        object.method2();    }    public void method3() {        object.method3();    }}

在现在标记为红色的“对象”上按Alt + Enter,选择“创建字段”,然后选择MyInterfaceWithManyMethods。

public class MyDecorator {    private MyInterfaceWithManyMethods object;    public void method1() {        object.method1();    }    public void method2() {        object.method2();    }    public void method3() {        object.method3();    }}

选择对象变量,按Alt + Enter,选择“添加构造函数参数”:

public class MyDecorator {    private MyInterfaceWithManyMethods object;    public MyDecorator(MyInterfaceWithManyMethods object) {        this.object = object;    }    public void method1() {        object.method1();    }    public void method2() {        object.method2();    }    public void method3() {        object.method3();    }}

您只需按几下Alt +
Enter即可完成所有操作。阅读内容很繁琐,但可以在不到20秒的时间内完成。如果仅使用2或3种方法,使用实时模板可能会更快,但是如果使用复杂签名的方法很多,则使用此方法将在约20秒内获得工作结果。Alt
+ Enter只是岩石:D



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

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

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