现在要访问a,b,c三个对象的show()方法,该如何访问?
问题:
一个对象存入到Vector中时,转换成了一个Object对象,从Vector中取出时也是一个Object,需要先转换成原来的类的类型,才能调用该类的方法,a,b,c存入到Vector中后(程序)就不知道它属于那个类,也就不知道该怎么转换。
该如何解决这个问题,原来考虑使用reflect来解决,但是不行。
问题:
一个对象存入到Vector中时,转换成了一个Object对象,从Vector中取出时也是一个Object,需要先转换成原来的类的类型,才能调用该类的方法,a,b,c存入到Vector中后(程序)就不知道它属于那个类,也就不知道该怎么转换。
该如何解决这个问题,原来考虑使用reflect来解决,但是不行。
接口,是不行的。共同的超类可以,例如三个类的超类都是D,那么Type是D就行了,根据多态的理论,tmp会自动调用合适的show()。
但,a,b,c的功能差别太大了,除了show()方法的功能有相似之处。所有肯定不能让他们继承同一个超类。
为什么不能使用reflect?
|
楼上的兄弟的思路是行的,但Menthod类使用的不对。不过还是谢了先。
public static void main(String[] args) {
java.util.Vector v = new java.util.Vector();
v.add(new A());
v.add(new B());
v.add(new C());
for (int i=0; i
}
}
}
interface InFace {
public void show();
}
class A implements InFace {
public void show() {
System.out.println("A class");
}
}
class B implements InFace {
public void show() {
System.out.println("B class");
}
}
class C implements InFace {
public void show() {
System.out.println("C class");
}
}
结果:(ant执行)
Buildfile: build.xml
run:
[java] A class
[java] B class
[java] C class
BUILD SUCCESSFUL
Total time: 1 second
for(i=0;i
Object obj=v.get(i);
if(obj instanceof A)
{
((A)obj).show();
}
if(obj instanceof B)
{
((B)obj).show();
}
if(obj instanceof C)
{
((C)obj).show();
}
}
一个Vector v 中存储了A a、 B b、C c三个对象,A,B,C 三个类实现了一个共同的接口show(),但各自的实际工作有很大差别。
现在要访问a,b,c三个对象的show()方法,该如何访问?