站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2SE 专题向上转型的问题

向上转型的问题

摘要: 向上转型的问题



public class dd{
public StringBuffer okgo(Object tablenamed) {
tablenamed aa=new tablenamed();
}
}
public class Test{
public String ss="sfsfsdsfsd";
}

tablenamed 为类的名称,我要在这个方法里创建一个新传进来的方法

能实现吗, 实际的做法 比如:
public StringBuffer createShow_caption(Object tablenamed) {
Test aa=new Test(); ///Test 为实际上存在的类名,在上面里被做为参数传进去了,,


public static void main(String[] arg){
dd d=new dd();
d.okgo("Test");
)

能不能实现这个问题呢


也许会有另一种方法实现得了


要求不是很清楚


就是用传进去的参数作为类名,,创建一个新的类,,之后可以调用这个类里的方法



我理解有问题


好象是不可以的


也许会有其它方法解决得了,,,希望中。。。。。。。。。。。。。


又是一条没人能解决的问题


可以,采用java的反射机制就可以了

Class c = Class.forName("java.lang.String");
Object b = c.newInstance();

b就可以获得这样就可以动态的加载类了,不知道是否符合你的要求


Class c = Class.forName("这个是项目的类名");
Object b = c.newInstance();///能得出相关的类引用吗

如:b dd=new b();


没问题,利用反射机制非常容易
public static void reflect(String className,Object classObject,String methodName,
String[] argTypeNames,Object[] args) throws Exception{
Class cls = Class.forName(className);
Class[] argTypes = new Class[argTypeNames.length];
for(int i=argTypes.length-1;i>=0;i--){
argTypes[i] = Class.forName(argTypeNames[i]);
}
Method method = cls.getMethod(methodName,argTypes);
method.invoke(cls.cast(classObject),args);
}
上面这个方法就可以根据给定的类名、类对象、方法名、方法参数类型数组、方法参数数组来执行指定类的指定方法,并使用给定的参数

不过反射机制的运行效率较低,虽然经过多次改进,最好的效率也不过是普通方法的一半


↑返回目录
前一篇: JPanel和Container的区别?
后一篇: 写了个Applet,大家来看看