我需要为我的应用创建一个元素存储库。
这是我创建的课程。
public class Elements
{
public enum Type1
{
A ("text1"),
B ("text2"),
C ("text3"),
D ("text4"),
E ("text5");
private String identifier;
Type1(String identifier)
{
this.identifier = identifier;
}
getPath()
{
String path = "";
//do something
return path;
}
}
}
现在我可以使用Elements.type1.A.getPath();
我做了一个静态导入的Elements.type1,我想删除getPath()的用法,因为它会使我的代码复杂化。即。我需要能够使用type1.A
。
所以我做了,
public class Elements
{
public enum Type1
{
A
{
public String toString()
{
return getPath("text1");
}
},
B
{
public String toString()
{
return getPath("text2");
}
},
C
{
public String toString()
{
return getPath("text3");
}
};
Type1() {}
}
}
现在我可以将Elements.Type1.A
用于print语句,但我有一个接受String作为参数的方法。
这样就成了Elements.Type1.A.toString()
。如果没有toString(),则会抛出错误。
有没有办法摆脱toString()
?
编辑:新代码
public Interface Type1
{
String A = "text1";
String B = "text2";
String C = "text3";
}
public class Utility
{
public static void main(String[] args)
{
getPath(Type1.A);
}
public static void getPath(String arg)
{
//Constructs xpath - text1 changes to //*[contains(@class,'text1')]
return xpath;
}
}
public class myClass
{
public void doSomething()
{
assertEquals(Type1.A,xpath);
}
}
这里,Type1.A返回“text1”而不是// * [contains(@ class,'text1')]
答案 0 :(得分:3)
看起来你需要三个字符串常量而不是枚举。
public static final String A = "test1";
public static final String B = "test2";
public static final String C = "test3";
使用界面并不总是最好的,但如果没有进一步的背景,我无法提出更好的建议
public interface Type1 {
String A = "test1";
String B = "test2";
String C = "test3";
}
答案 1 :(得分:3)
好吧,正如Peter
所说,这里需要final static
个变量..
看起来,就像你想要一套String Constants
一样......那么你肯定应该使用Peter
引用的内容..
只是为了扩展他所说的,你可以创建一个接口,并在其中包含所有的字符串常量。然后你可以通过Interface
名称轻松访问它们。
public Interface Type1 {
String A = "text1";
String B = "text2";
String C = "text3";
}
在您的其他课程的某个地方: -
public class Utility {
public static void main(String[] args) {
// You can pass your String to any method..
String a = Type1.A;
getPath(a);
getPath(Type1.B);
}
// This method is not doing work according to its name..
// I have just taken an example, you can use this method to do what you want.
public static void getPath(String arg) {
// You can process your string here.
arg = arg + "Hello";
}
}
您还可以根据需要更改toString()
返回的内容..
然后关注Java Naming Convention
..枚举,类以Uppercase
字母开头..