在 Swing 组件初始化中避免这种转义

问题描述 投票:0回答:1

在最近的 Java 中,Swing 代码中经常出现 linting 错误

possible 'this' escape before subclass is fully initialized
。例如,从 ctor 调用 AbstractAction.putValue()。

    public class PauseAction extends AbstractAction {
        private TrackModel model;

        public PauseAction(TrackModel model) {
            this.model = model;
            putValue(NAME, "Pause");
            // Bunch of other possible keys
        }

        @Override
        public void actionPerformed(ActionEvent e) {
            model.pause();
        }
    }

尝试避免此警告是愚蠢的行为吗?

swing
1个回答
0
投票

我会在这里使用工厂模式

public class PauseAction extends AbstractAction {
    private TrackModel model;

    private PauseAction(TrackModel model) {
        this.model = model;
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        model.pause();
    }

    public static Action createPauseAction(TrackModel model) {
        PauseAction result = new PauseAction(model);
        result.putValue(NAME, "Pause");
        // Bunch of other possible keys
        return result;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.