class Start
{
public static void main( String[] argv )
{
int argc =argv.length;
if ( argc == 0 ) {
System.err.println( "error");
return;
}
try
{
Class<?> c = Class.forName( argv[argv.length-1] );
//c kowalski = c.newInstance( );
}
catch ( Exception e ) { System.out.println(e) ; return; }
}
}
class Test implements InfoInterface
{
public void display()
{
System.out.println("HI!");
}
static int w;
public int dodawanie (int a, int b)
{
w=a+b;
return w;
}
}
我的问题是如何在Test
课程中创建Start
课程的对象?
必须通过命令行添加Test
类
在这个程序中,我必须通过Test
类中的对象从Start
类获取方法。
答案 0 :(得分:2)
您可以通过在命令行执行程序时在参数中传递具有完整类路径的类的名称来创建动态对象。
答案 1 :(得分:0)
您可以通过执行以下命令获取新的类实例:
Class<?> c = Class.forName(argv[argv.length-1]);
Test t = (Test) c.newInstance( );
或者,如果您有更多InfoInterface
个实施:
Class<?> c = Class.forName(argv[argv.length-1]);
if (!InfoInterface.class.isAssignableFrom(c)) {
throw new Exception("Invalid interface specified");
}
Class<InfoInterface> iic = (Class<InfoInterface>) c;
InfoInterface ii = iic.newInstance();
请注意,在
中使用的参数中指定完整的类名(包括包名)Class<?> c = Class.forName(argv[argv.length-1]);
线。您当然也可以自己添加包字符串:
String command = argv[argv.length-1];
Package p = InfoInterface.class.getPackage();
if (p != null) {
command = p.getName() + "." + command;
}
Class<?> c = Class.forName(command);
假设Test
和其他命令与InfoInterface
位于同一个包中。