Mam taką klasę:
package test;
public class Foo {
public Foo(String val) {
System.out.println(val);
}
}
W taki sposób używając Reflection mogę stworzyć nową instancję danej klasy:
package test;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
public class Program {
public static void main(String args[]) {
try {
Class<?> foo = Class.forName("test.Foo");
Constructor<?> constructor = foo.getConstructor(new Class[]{String.class});
constructor.newInstance(new Object[] {"Ala ma kota!"});
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
}
}
Wszystko działa ponieważ, klasa Foo i Program znajdują się w jednym pakiecie. Co należy zrobić aby utworzyć instancję klasy, która jest w innym pliku *.jar?