【发布时间】:2015-07-10 19:02:18
【问题描述】:
我想传递一个类常量来作为参数代码是
public class XConstants {
public static final String DATA= "DATA";
public static final String SET = "Node";
}
public static void main(String[] args) {
foo(XConstants.DATA);
}
public static void foo(XConstants d){
System.out.println(d);
}
在主要方法中,我将XConstants.DATA 传递给foo 函数,但它给了我类型未匹配的编译错误,这很明显,因为XConstants.DATA 是字符串类型。
类似地,如果我使用枚举并将枚举值传递给函数参数,它将完全正常工作。代码是
enum Color{RED,BLUE}
public static void main(String[] args) {
bar(Color.RED);
}
public static void bar(Color d){
System.out.println(d);
}
这里的枚举值只是作为参数传递。 我想知道我应该如何更改我的 XConstants 代码,以便它与代码中提到的枚举一样工作(我知道两者是不同的东西)。 请注意,我不想更改方法签名,如
public static void main(String[] args) {
foo(XConstants.DATA);
}
public static void foo(String d){
System.out.println(d);
}
在这种情况下它会正常工作,因为在这种情况下类型不匹配冲突解决了。 简而言之,我想知道我应该如何更改我的 XContants 代码,r 我应该使用哪种设计模式来实现这个工作正常,因为它在枚举的情况下工作。
任何帮助将不胜感激
【问题讨论】:
-
我很困惑。为什么要将
String对象传递给以XConstants对象作为参数的方法?简单地说“我不想更改方法签名”是不够的。您需要解释为什么,以便我们可以帮助您实现您想要实现的目标。 -
由于 XConstants 不是枚举(并且 DATA 不是枚举类型),因此您不能按原样对待它们...
-
@RedRoboHood 仅用于学习目的,我想将 String 更改为 XConstants Object 以了解它在枚举情况下的工作方式
-
@ericbn 我知道你在评论中提到了什么,我只是想知道我应该如何实现这个目标??
-
@Mark 请记住,
String类和XConstants类完全不相关。它们都直接继承自Object在单独的分支中。为了从String转换为XConstants,您需要创建自己的函数,该函数从String构造XConstants。没有内置的 Java 方法可以做到这一点,据我所知,这里没有任何意义。
标签: java enums parameter-passing constants