你是要这样吗?
登录 | 论坛导航 -> 华新鲜事 -> 社会百科 | 本帖共有 2 楼,分 1 页, 当前显示第 1 页 : 本帖树形列表 : 刷新 : 返回上一页
<<始页  [1]  末页>>
作者:我心为谁动 (等级:3 - 略知一二,发帖:515) 发表:2003-06-02 20:30:29  楼主  关注此帖评分:
终於盼到希望了不过想问一下:obj是Object,并不是我的MyClass,用obj来调用MyClass的method很显然找不到的,这个怎么办?如果还要用(MyClass)obj的话那岂不是还要hard coding?
你是要这样吗?
File Name: Test.java
--------------------------------------------
import java.io.*;
import java.lang.reflect.Method;

public class Test
{
public static void main(String args[]) throws Exception
{
new Test(args[0], args[1]);
}

public Test (String className, String methodName) throws Exception
{
Class c = Class.forName(className);
Method m = c.getMethod(methodName, null);
m.invoke(this, null);
}
}

File Name: MyClass1.java
-----------------------------
public class MyClass1
{
public static void testMethod ()
{
System.out.println("My Name is MyClass1");
}
}

File Name: MyClass2.java
----------------------------
public class MyClass2
{
public static void testMethod ()
{
System.out.println("My Name is MyClass2");
}
}

以上code, 运行结果如下
>>java Test MyClass1 print

>>My Name is MyClass1

>>java Test MyClass2 print

>>My Name is MyClass2

不过这个里面的modifier和static keyword好像有要求, 以上public+static的组合是没问题的, 不过其他的好像不可以。
Put your OWN COOL signature here!
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版所有回复从这里展开收起列表
作者:我心为谁动 (等级:3 - 略知一二,发帖:515) 发表:2003-06-02 20:46:03  2楼 评分:
你是要这样吗?File Name: Test.java -------------------------------------------- import java.io.*; import java.lang.reflect.Method; public class Test { public static void main(String args[]) throws Exception { new Test(args[0], args[1]); } public Test (String className, String methodName) throws Exception { Class c = Class.forName(className); Method m = c.getMethod(methodName, null); m.invoke(this, null); } } File Name: MyClass1.java ----------------------------- public class MyClass1 { public static void testMethod () { System.out.println("My Name is MyClass1"); } } File Name: MyClass2.java ---------------------------- public class MyClass2 { public static void testMethod () { System.out.println("My Name is MyClass2"); } } 以上code, 运行结果如下 >>java Test MyClass1 print >>My Name is MyClass1 >>java Test MyClass2 print >>My Name is MyClass2 不过这个里面的modifier和static keyword好像有要求, 以上public+static的组合是没问题的, 不过其他的好像不可以。
另一个办法, 有前提的
如果要调用的class们有相同的method, 如public static void print(), 一般来说这些class都是某一个parent class的children,
并且这些class的总数不多, 可以如下办

设class们是 Child1, Child2, Child3..., parent class is Parent, method是print,

Parent anObject = however_you_created_it;
if (anObject instanceof Child1)
Child1.print();
else if (anObject instanceof Child2)
Child2.print();
...
...
...
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版所有回复从这里展开收起列表
论坛导航 -> 华新鲜事 -> 社会百科 | 返回上一页 | 本主题共有 2 篇文章,分 1 页, 当前显示第 1 页 | 回到顶部
<<始页  [1]  末页>>

请登录后回复:帐号   密码