[Difference Between Class.forName() and Class.forName().newInstance()] sample code (#13451)

This commit is contained in:
Dmitriy Budim 2023-02-08 22:48:26 +01:00 committed by GitHub
parent 221790a93f
commit 6a7adf631d
2 changed files with 38 additions and 0 deletions

View File

@ -0,0 +1,8 @@
package com.baeldung.loadclass;
public class MyClassForLoad {
private String data = "some data";
}

View File

@ -0,0 +1,30 @@
package com.baeldung.loadclass;
import org.junit.jupiter.api.Test;
import java.lang.reflect.InvocationTargetException;
import static org.junit.jupiter.api.Assertions.assertInstanceOf;
public class LoadClassUnitTest {
@Test
public void whenUseClassForName_createdInstanceOfClassClass() throws ClassNotFoundException {
Class instance = Class.forName("com.baeldung.loadclass.MyClassForLoad");
assertInstanceOf(Class.class, instance, "instance should be of Class.class");
}
@Test
public void whenUseClassForNameWithNewInstance_createdInstanceOfTargetClas() throws ClassNotFoundException, InstantiationException, IllegalAccessException {
Object instance = Class.forName("com.baeldung.loadclass.MyClassForLoad").newInstance();
assertInstanceOf(MyClassForLoad.class, instance, "instance should be of MyClassForLoad class");
}
@Test
public void whenUseClassForNameWithDeclaredConstructor_newInstanceCreatedInstanceOfTargetClas() throws ClassNotFoundException, InstantiationException, IllegalAccessException, NoSuchMethodException, InvocationTargetException {
Object instance = Class.forName("com.baeldung.loadclass.MyClassForLoad").getDeclaredConstructor().newInstance();
assertInstanceOf(MyClassForLoad.class, instance, "instance should be of MyClassForLoad class");
}
}