class 中定义的方法无法访问

method defined in class inaccessible

我正在关注这个例子: https://www.boraji.com/spring-boot-configurationproperties-example 要制作 Java Spring 属性的嵌套列表,经过混淆和简化后,看起来像这样:

conf.property:

a.b.c=item1,item2,item3

AppProperties.java(位于包 x.y.z.properties):

@EnableConfigurationProperties
@ConfigurationProperties(prefix = "a")
@Configuration
public class AppProperties {
    private String version;
    private String email;
    public BProperties b = new BProperties();



    static class BProperties {
        public List<String> c;

        public List getC() {
            return c;
        }

        public void setC(List c) {
            this.c= c;
        }
    }
}

FieldValidator.java(位于包 x.y.z.validation):

public class IsItemValidator implements ConstraintValidator<IsItem, Object> {

    @Autowired
    public AppProperties appProperties;
    //... bunch of other stuff...

    private boolean hasValidItem(final Object item) {


        return appProperties.getB().getC().contains(item);
    }
}

为简单起见,我没有写出所有 getters/setters,它们都在那里,而且是 public 的一切。

我仍然得到:

java: getC() in a.b.c.properties.BProperties is defined in an inaccessible class or interface

我尝试使用谷歌搜索并查看类似的问题,但 none 的答案对我来说很有意义.. 这里发生了什么?我已经根据我阅读的关于不同包装的答案之一制作了所有内容 public..

将您的 BProperties class 声明为 public:

public static class BProperties {

在您的代码中,它具有包私有可见性,因此 IsItemValidator class 看不到它,因为它位于另一个包中。