How to instantiate class from with class.forName()

I try to instantiate class from a class name but I fail. My first state it’s find a good class, I manage this part but after I find no possibility to instantiate from the class name. I need to do that because all my methods is used everywhere in my code and I need to find information from those in a single place. I hope my purpose is clear…

When I pass the name find with method Field by method forName() the console return Unhandled exception type ClassNotFoundException

import java.util.Iterator;
import java.lang.reflect.*; 
Target class_a = new Target() ;
Target class_b = new Target() ;
Truc class_c = new Truc() ;
void setup() {;;
  Field [] f = this.getClass().getDeclaredFields();
  println("field num:",f.length);
  for(int i = 0 ; i < f.length ; i++) {
    if(f[i].getType().getName().contains("Target")) {
     println("BRAVO it's a good classes");
     // I imagine pass the name here to instantiate the class but that's don't work
     //Class<?> class_type = Class.forName(f[i].getName());
     Class<?> class_type = Class.forName("class_a");
     //Class<?> class_type = Class.forName(f[i].getClass());
     Target t = (Target) class_type.newInstance();
     // here I try to call method of the selected class
class Target{
  boolean is;
  Target() {}
  void is(boolean is) { = is;
  boolean get_is() {
    return is;
class Truc{
  Truc() {}

Unhandled exception type ClassNotFoundException

That means the compiler is expecting you to surround the class loading function(s) with an exception handling block. Namely, the try and catch blocks.

At a minimum, you could do something like this:

try {
  // load class by name, etc.
catch(Exception ex)
  println("Something went wrong");

Of course, that will print the same message (plus the built-in) for any error.

The message you are getting is calling out for something more like this:

try {
  // load class by name, etc.
catch(ClassNotFoundException ex)
  println("Class not found");
catch(IllegalAccessException ex)
  println("Do you have permission for that?");
catch(InstantiationException ex)
  println("Could not instantiate object");

It is up to you how much detail you want from the exception handling.

For more, take a look at

1 Like

Thanks for the information about the try catch I found a solution. Thx for the advice.