アプリの要素リポジトリを作成する必要があります。
これは私が作成したクラスです。
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() {}
}
}
これでprintステートメントで使用できますElements.Type1.A
が、パラメーターとして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は// * [contains(@class、'text1')]ではなく"text1"を返します。