使类变量

时间:2011-04-20 12:23:27

标签: java android android-listview

任何人都可以告诉我是否有方法,如果有,如何使活动基于if thenswitch语句实现整个类,实质上使类本身成为一个变量? [我想在选项卡中显示特定的列表类(活动),具体取决于从另一个选项卡中的OnItemClicked事件接收的值]。

让您了解我认为我可能正在寻找的内容:

if(position == 1){//run class 1}

if(position == 2){//run class 2}

感谢。

6 个答案:

答案 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个抽象)工厂模式。

查看it inside the Java Design Patterns

答案 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