Invocation of methods of a dynamically loaded clas

Question:
I have two classes in two separate files. I don’t want to use an interfacebecause the types of objects I’ll instantiate dynamically can be quitedifferent each time. What can I do to call method without the useof an interfase?

Answer:
Java 1.1 introduced a facility called reflection, through which themethods of a class can be discovered and invoked without compile-timeknowledge of the class. You need to familiarize yourself with theclasses in java.lang.reflect. Here is a rather contrived example showinghow to call System.out.println() without invoking it directly. Youwill generally use reflection when you dynamically load a class of anunknown type, but with one or more known methods.

import java.lang.reflect.*;public final class Reflect {  public static final void main(String[] args) {    Class outputClass, stringClass[];    Object[] arguments;    Method printlnMethod;    outputClass = System.out.getClass();    stringClass = new Class[1];    stringClass[0] = String.class;    try {      printlnMethod = outputClass.getDeclaredMethod("println", stringClass);    } catch(NoSuchMethodException e) {      System.err.println("println does not exist.");      e.printStackTrace();      return;    }    arguments = new Object[1];    arguments[0] = "Hello world!";    try {      printlnMethod.invoke(System.out, arguments);    } catch(InvocationTargetException e) {      System.err.println("invocation failed.");      e.printStackTrace();    } catch(IllegalAccessException e) {      System.err.println("invocation failed.");      e.printStackTrace();    }  }}
Share the Post:
Share on facebook
Share on twitter
Share on linkedin

Overview

Recent Articles: