我需要为我的应用程序创建一个元素存储库。
这是我创建的课程。
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() 的使用,因为它会使我的代码复杂化。IE。我需要能够使用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
打印语句,但我有一个接受字符串作为参数的方法。
这样就可以了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')]