我的情况如下:
String artifactName="testplan"; //or at times "testsuite" can come
switch (artifactName) {
case testplan: {
TestPlan artifact = new TestPlan();
}
case testsuite: {
TestSuite artifact = new TestSuite();
}
从上面我希望将工件对象移到开关之外。 在这两个类(TestSuite和TestPlan)中,我都有一个属性,当我获得工件并相应地使用对象时,将对其进行设置。确切地说,我将使用它来将此对象转换为xml(xml因类而异)。我该如何摆脱伪影?当类在切换情况下变化时,如何获取对象。 请最早帮助我。
答案 0 :(得分:1)
也许您也可以进行以下操作:
String artifactName="testplan";
Object artifact;//create reference
switch (artifactName) {
case testplan: {
artifact = new TestPlan();//assing it here
break;
}
case testsuite: {
artifact = new TestSuite();//or here
break;
}
因此,您需要直接处理其中一个类的实例。你懂。我完全不熟悉Java。如果有人愿意提供更好的主意,那将是一件好事。但是现在我看到了一种解决方案。
if(object instanceof TestPlan){
((TestPlan) object).doMethod();
}else if (object instanceof TestSuite){
((TestSuite)object).doMethod();
}
但是请注意,如果不满足任何切换条件,它将仍然为空。
答案 1 :(得分:1)
在开关块外部创建类型为 TestPlan ( TestSuite 扩展 TestPlan )的引用“工件”,然后在case语句内部分配对象(TestPlan / TestSuite)根据您的条件。下面的代码可以正常工作。
如果要使用在两个类中都可用的通用方法,并使用继承和多态性的概念。您可以在TestSuite(child)中扩展TestPlan(Parent),并且可以使用TestPlan参考来代替对象引用。
String artifactName="testplan";
TestPlan artifact;// Test Plan is the Parent class and extend it to TestSuite
switch (artifactName) {
case "testvplan": {
artifact = new TestPlan();
break;
}
case "testsuite": {
artifact = new TestSuite();
break;
}
default : {
//some code for default condition
}
}