当前页面: 开发资料首页 → 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);
}
上面这个方法就可以根据给定的类名、类对象、方法名、方法参数类型数组、方法参数数组来执行指定类的指定方法,并使用给定的参数
不过反射机制的运行效率较低,虽然经过多次改进,最好的效率也不过是普通方法的一半