Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 修改快速修复';将可见性更改为默认值';_Java_Eclipse - Fatal编程技术网

Java 修改快速修复';将可见性更改为默认值';

Java 修改快速修复';将可见性更改为默认值';,java,eclipse,Java,Eclipse,假设出现以下情况: 我有一个私有字段和一个引用或修改该字段的内部类。编译器将此标记为警告,因为该字段应受到保护(默认可见性)。到目前为止还不错 Eclipse足够聪明,可以为这种情况提供快速修复,当我使用它时,它只是删除了私有修饰符 这将删除警告,但与我的代码样式不匹配。我想用protected来代替private这个词 有没有办法修改Quickfix的行为 更好理解的示例代码:ActionListener中的foo标记为警告 import java.awt.event.ActionEvent;

假设出现以下情况: 我有一个私有字段和一个引用或修改该字段的内部类。编译器将此标记为警告,因为该字段应受到保护(默认可见性)。到目前为止还不错

Eclipse足够聪明,可以为这种情况提供快速修复,当我使用它时,它只是删除了私有修饰符

这将删除警告,但与我的代码样式不匹配。我想用protected来代替private这个词

有没有办法修改Quickfix的行为

更好理解的示例代码:ActionListener中的foo标记为警告

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Test {

    private String foo = "bar";

    public void bla() {

        ActionListener al = new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {

                foo = "whatev";
            }
        };
    }
}
提前谢谢

编辑: 多亏了阿列克斯和瘦范。我误解了违约和保护的可见性。不过,有没有办法修改快速修复?

我的“风格”是为私有字段创建某种类型的(必要时受保护的)setter,因为我试图避免非私有字段。非私有字段的问题是,您必须在基类中添加大量额外的代码,以捕获可能来自子类的所有可能的无效更改。如果您有一个受保护的/公共的setter,您只需捕获该setter中的每一个无效更改,类的其余部分就不必担心它了

在某些情况下,创建非私有字段是绝对有意义的,但您的代码示例通常不是其中之一(至少对我而言)。

我的“风格”是为私有字段创建某种类型的(必要时受保护的)setter,因为我尽量避免使用非私有字段。非私有字段的问题是,您必须在基类中添加大量额外的代码,以捕获可能来自子类的所有可能的无效更改。如果您有一个受保护的/公共的setter,您只需捕获该setter中的每一个无效更改,类的其余部分就不必担心它了


在某些情况下,创建非私有字段是绝对有意义的,但您的代码示例通常不是其中之一(至少对我而言)。

与Eclipse中的其他内容一样,快速修复是由插件提供的。最有可能是JDT插件之一。我认为你真正能做的唯一一件事就是在你自己的插件中编写你自己的快速修复。

与Eclipse中的所有内容一样,快速修复是由插件贡献的。最有可能是JDT插件之一。我认为你唯一能做的就是在自己的插件中编写自己的快速修复程序。

请注意,“默认”可见性和“受保护”可见性不是一回事
protected
表示所有子类都可以访问该字段;默认可见性意味着同一个包中的所有类都可以访问该字段。默认可见性不受保护,在java中它应该是包,而在.NET中它应该是内部的。@AleksG谢谢,我误解了。。。尽管如此,我还是想修改quickfix以使字段受到保护,除非对于我的示例代码(?)这样的东西来说这不是一个好的实践。请注意,“默认”可见性和“受保护”可见性不是一回事
protected
表示所有子类都可以访问该字段;默认可见性意味着同一个包中的所有类都可以访问该字段。默认可见性不受保护,在java中它应该是包,而在.NET中它应该是内部的。@AleksG谢谢,我误解了。。。尽管如此,我还是希望修改quickfix以使字段受到保护,除非对于我的示例代码(?)