我在创建类对象时遇到麻烦。 我有两个班级,雇员和文章。两者都有相同的方法(edit(),remove(),save(),list())。现在,我想根据字符串“ item”从特定的类创建对象“ obj”,因此以后可以像显示的波纹管那样使用他。
我的方法
private void subMenu(String item) {
switch(item) {
case "employee":
Employee obj = new Employee();
break;
case "article":
Article obj = new Article();
break;
}
obj.edit();
obj.remove();
...
}
我尝试过类似的操作,但是它会引发异常:
Duplicate local variable obj
课堂文章
public class Article() {
public void edit() {
}
public void remove() {
}
public void save() {
}
public void list() {
}
}
班级员工
public class Employee() {
public void edit() {
}
public void remove() {
}
public void save() {
}
public void list() {
}
}
答案 0 :(得分:5)
1)用所有常用方法创建一个接口(给它一个比Item
更好的名称):
public interface Item {
void edit();
void remove();
void save();
void list();
}
2)使两个类都实现该接口:
public class Article implements Item {
public void edit() {
}
public void remove() {
}
public void save() {
}
public void list() {
}
}
3)用Item
替换局部变量:
private void subMenu(String item) {
Item obj;
switch(item) {
case "employee":
obj = new Employee();
break;
case "article":
obj = new Article();
break;
default:
return; //FIXME Can it happen?
}
obj.edit();
obj.remove();
...
}
答案 1 :(得分:2)
您可以使用以下方法创建接口:
public interface InterfaceName {
void edit();
void remove();
void save();
void list();
}
并将其实施到Article和Employee类
public class Employee implements InterfaceName {
....
}
public class Article implements InterfaceName {
....
}
现在您可以在方法中使用该接口
private void subMenu(String item) {
InterfaceName obj;
switch(item) {
case "employee":
obj = new Employee();
break;
case "article":
obj = new Article();
break;
}
obj.edit();
obj.remove();
...
}