gpt4 book ai didi

java - 打印枚举期间二元运算符 '+' 的操作数类型错误

转载 作者:行者123 更新时间:2023-12-01 07:02:29 26 4
gpt4 key购买 nike

我正在使用 JavaFX 应用程序并尝试使用所有路径创建单独的枚举。这是代码。

enum Paths {
STYLE_SHEETS("../stylesheets"),
CONTROLLER("../controller"),
CONNECTION("../connection"),
RESOURCE("../resource"),
VIEWS("../views"),
APPLICATION("../application"),
MOVE_UP("..");

private final String path;

private Paths(final String value) {
this.path = value;
}

@Override
public String toString() {
return path;
}
}
public class Test{
public static void main(String[] args){
System.out.println(Paths.MOVE_UP + Paths.VIEWS);
}
}

但是当我尝试组合两个枚举的实例时,我收到了错误。

Test.java:29: error: bad operand types for binary operator '+'
System.out.println(Paths.MOVE_UP + Paths.VIEWS);
^
first type: Paths
second type: Paths
1 error

1) 为什么我会收到此错误?

2)这是创建路径枚举并在要访问目录的 Controller 类中使用的好方法吗? (这是可选问题。回答这个问题对我来说将是额外的奖励。)

最佳答案

您可以通过添加 toString() 方法来快速解决这个问题。

为什么需要toString()方法?

Because it would be ambiguous. Java only converts + to String#append, when it knows at least one part should be a string. – @Silverclaw

更新的代码:

enum Paths {
STYLE_SHEETS("../stylesheets"),
CONTROLLER("../controller"),
CONNECTION("../connection"),
RESOURCE("../resource"),
VIEWS("../views"),
APPLICATION("../application"),
MOVE_UP("..");

private final String path;

private Paths(final String value) {
this.path = value;
}

@Override
public String toString() {
return path;
}
}
public class test{
public static void main(String[] args){
System.out.println(Paths.MOVE_UP.toString() + Paths.VIEWS.toString());
}
}

编辑完成:

为了更好地理解,Java 需要首先解决 + 运算符,然后它将传递给 System.out.println(); 因此,正如您所期望的 toString( ) 应该被调用,它不会调用,因为没有人会调用 println(); 他们需要先解决 + 运算符,而 Enum 与 + 没有任何关系code> 这就是您收到此错误的原因。

关于java - 打印枚举期间二元运算符 '+' 的操作数类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38656222/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com