如何从Java中的子代为最终的静态变量赋值?

时间:2019-01-03 09:39:01

标签: java spring

假设我们具有这样的层次结构:

class Parent {
  public static final String BASE_NAME = "parent";
  public static final String X_URL = BASE_NAME + "/x";
  public static final String Y_URL = BASE_NAME + "/y";
}

class ChildA extends Parent {
  public static final String BASE_NAME = "childA";
  public static final String X_URL = BASE_NAME + "/x";
  public static final String Y_URL = BASE_NAME + "/y";

  @RequestMapping(value= X_URL)
  public String renderXPage(){...}
}

如您所见, X_URL和Y_URL 在父级和子级中都重复,如果子级可以以其自己的BASE_NAME 喂给父级,则可以消除冗余重复这些常量,然后我们可以将它们用作注释值。如何在Java中执行此操作?

2 个答案:

答案 0 :(得分:5)

没有办法可靠地实现这一目标。

您可以在课程上添加@RequestMapping批注,然后在其中放置U​​RL的基本部分。

示例:

@RequestMapping("ChildA")
class ChildA {
  @RequestMapping(value= "x")
  public String renderXPage(){...}
}

renderXPage将处理“ ChildA / x” URL。

答案 1 :(得分:0)

使用@talex的解决方案,我想到了这个简洁的解决方案:

public interface CommonRelativeUrls {
  String X_URL = "/x";
  String Y_URL = "/y";
}

public interface Entities {
  String CLASS_A = "class-a";
  String CLASS_B = "class-b";
  ...
}

@RequestMapping(value = Entities.CLASS_A)
public class ClassA implements CommonRelativeUrls {
  @RequestMapping(value= X_URL)
  public String renderXPage(){...}
}