@RequestMapping 不能在父类中使用与子类不同的静态最终常量
Posted
技术标签:
【中文标题】@RequestMapping 不能在父类中使用与子类不同的静态最终常量【英文标题】:@RequestMapping can not use a static final constant in parent class which is not in same package with subclass 【发布时间】:2020-11-10 15:35:48 【问题描述】:当@RequestMapping 在父类中使用与子类不在同一个包中的静态最终常量时,这个想法给了我一个类似的错误
“V1_BASE_URL”在“XXXXXXXX.BaseController”中具有受保护的访问权限
所以,我不知道为什么,接下来是我的代码。
这是父类
package com.controller;
public class BaseController
protected static final String V1_BASE_URL = "/crm/v1/";
这是子类,和BaseController
不在同一个包中
package com.controller.corpus;
@RequestMapping(V1_BASE_URL+"/crm/v1/corpus_subset")
public class CorpusSubsetController extends BaseController
error image
我没有找到一些有用的答案可以解决我的问题,但是我发现如果子类和父亲在同一个包中,类名中的注释可以使用static constant
,但是如果子类与父亲不在同一个包中,则注解不能使用,所以我的问题是类名中的注解属于谁?如果类中的注解属于包A中的哪个类,那么注解属于包A??
【问题讨论】:
这是一个重复的问题,已在此处回答 link 如果不在同一个包中,则无法通过设计访问受保护的属性,因此这是意料之中的。 这能回答你的问题吗? What is the difference between public, protected, package-private and private in Java? 见docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html 【参考方案1】:这是因为您试图在类范围之外的注释中访问V1_BASE_URL
。如果您像这样访问它,您将不会有任何编译错误,例如:
public class CorpusSubsetController extends BaseController
public void test()
String test = V1_BASE_URL;
【讨论】:
好的,谢谢,但我也有疑问,当子类与父亲在同一个包中时,V1_BASE_URL 可以在注解@RequestMapping 中使用,这个注解也在类范围之外。以上是关于@RequestMapping 不能在父类中使用与子类不同的静态最终常量的主要内容,如果未能解决你的问题,请参考以下文章