相关疑难解决方法(0)

非法转发参考和枚举

我正在编写一个java游戏,它由一块瓷砖组成.我不能直观地定义瓷砖的边缘以及它们如何相互关联,例如为了获得瓷砖的相对边缘,我希望能够只输入TOP.opposite().但是,当使用枚举来定义这些边时,我最终必须在contstructor中至少引用其中两个:

public enum Edge {

   TOP(Edge.BOTTOM), //illegal forward reference
   BOTTOM(Edge.TOP),
   LEFT(Edge.RIGHT), //illegal forward reference
   RIGHT(Edge.LEFT);

   private Edge opposite;

   private Edge(Edge opp){
      this.opposite = opp;
   }

   public Edge opposite(){
      return this.opposite;
   }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法使用枚举来解决这个问题,这很简单?

java enums

58
推荐指数
6
解决办法
1万
查看次数

什么叫Java中的前向引用?

我已经通过 这个关于前向引用的合法性的问题,但不清楚forward referencesJava语言的含义.有人可以借助一个例子来解释吗?

java

16
推荐指数
1
解决办法
7510
查看次数

枚举中的非法前向引用

我有一个枚举,我试图将最终的静态变量作为参数传递给构造函数.问题是枚举中的第一个语句本身必须是一个实例,但在这种情况下,还没有定义最终变量.查看代码,您将了解:

public enum ParseResource {

    PUSH(API_URL); //Error: illegal forward reference

    private final static String API_URL = "https://api.parse.com/1";

    private String url;
    private ParseResource(String url) {
        this.url = url;
    }
}
Run Code Online (Sandbox Code Playgroud)

和另一种选择:

public enum ParseResource {

    //Illegal in enums, first statement has to be an instance
    private final static String API_URL = "https://api.parse.com/1";

    PUSH(API_URL);

    private ParseResource(String url) {
        this.url = url;
    }
}
Run Code Online (Sandbox Code Playgroud)

我该如何解决?谢谢.

java enums

5
推荐指数
1
解决办法
3491
查看次数

为枚举字符串值定义常量“值”

对于如下定义的枚举

public enum Cars {

    SWIFT("Maruti"),
    DZIRE("Maruti"), 
    CIAZ("Maruti"), 
    I10("Hyundai"), 
    CRETA("Hyundai");

    String company;
    Cars(String company){
        this.company = company;
    }   
}
Run Code Online (Sandbox Code Playgroud)

声纳错误

Define a constant instead of duplicating this literal "Maruti" 3 times.

如果我们定义静态字符串,它将无法编译

Cannot reference a field before it is defined

解决方案1:

public enum Cars {

    SWIFT(CarsString.MARUTI.companyName),DZIRE("Maruti"), I10("Hyundai"), CRETA("Hyundai");

    static String MARUTI = "Maruti";
    String company;
    Cars(String company){
        this.company = company;
    }

    enum CarsString {
        MARUTI("maruti"),
        HYUNDAI("Hyundai");
        String companyName;
        CarsString(String companyName){
            this.companyName = companyName;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

解决方案2:

不知道这是否是我们这样做的方式。当Cars.MARUTI未引用它时,它会出错Cannot reference …

java enums sonarqube

5
推荐指数
1
解决办法
65
查看次数

标签 统计

java ×4

enums ×3

sonarqube ×1