我有如下情况:
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根据类而不同)。如何从交换机中获取artofact?当班级在开关盒内变化时,如何获取对象。请最早帮帮我。
也许你也可以做以下事情:
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();
}
但要注意,如果没有满足切换案例,它仍然是空的。
在switch块之外创建TestPlan类型的引用'artifact'(TestSuite扩展TestPlan),然后在case语句中根据您所需的条件分配对象(TestPlan / TestSuite)。下面的代码工作正常。
如果您想使用两个类中都可用的公共方法,并使用继承和多态的概念。您可以在TestSuite(子)中扩展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
}
}