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 看不到它,因为它位于另一个包中。
我正在关注这个例子: 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 看不到它,因为它位于另一个包中。