任何人都可以告诉我是否有方法,如果有,如何使活动基于if then
或switch
语句实现整个类,实质上使类本身成为一个变量? [我想在选项卡中显示特定的列表类(活动),具体取决于从另一个选项卡中的OnItemClicked事件接收的值]。
让您了解我认为我可能正在寻找的内容:
if(position == 1){//run class 1}
if(position == 2){//run class 2}
感谢。
答案 0 :(得分:2)
您在寻找polymorphism吗?
interface MyService {
void doWork();
}
class CoolMyService {
void doWork() { /* do something */ }
}
class AnotherMyService {
void doWork() { /* do something else */ }
}
MyService service;
if(position == 1){ service = new CoolMyService(); }
if(position == 2){ service = new AnotherMyService() }
service.doWork();
我不知道列表中有多少项,但您可以根据需要调整上面的示例以动态加载对象。请记住,您可以使用多态和定义的interface来确保完整性。然后将实际工作放在具体的实现中。
答案 1 :(得分:0)
您可能需要(n个抽象)工厂模式。
答案 2 :(得分:0)
您可以使用广播接收器
if (position == 1){
sent broadcast event to one class
}if(position === 2){
sent broadcast event to another class
}
答案 3 :(得分:0)
您还可以查看使用Class.forName()
Class oClass = Class.forName(strClassName);
Tab myTab = (Tab) oClass.newInstance();
答案 4 :(得分:0)
我不确定我理解你的问题。
我的第一个解决方案是使用factory pattern实现dependency injection,将类作为参数传递给工厂方法:
代码:
Class impClass;
if (position == 1) {
impClass = First.class;
} else if (position == 1) {
impClass = Second.class;
}
Object myObject = ObjectFactory.createObject(impClass);
答案 5 :(得分:0)
抽象工厂或原型模式符合您的需求http://en.wikipedia.org/wiki/Prototype_pattern