Load class at runtime
Bài đăng này đã không được cập nhật trong 3 năm
- Giả sử có một class ở đâu đó mà hiện tại trong project chưa sử dụng được, hoặc bạn muốn có 1 class không nằm trong project, và khi bạn muốn sử dụng nó, bạn sẽ cần load class at runtime.
- Trong ví dụ này sẽ sử dụng 2 class là Test và Main như sau:
Test.java:
public class Test {
public static final String VALUE = "2days";
}
Main.java
import java.io.File;
import java.lang.reflect.Field;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
public class Main {
public static void main(String[] args) {
File file = new File("C:\\Users\\Public\\Test");
try {
ClassLoader classLoader = new URLClassLoader(new URL[]{file.toURL()});
Class clazz = classLoader.loadClass("Test");
Field field = clazz.getField("VALUE");
System.out.println("value = " + field.get(null));
} catch (MalformedURLException | ClassNotFoundException |
SecurityException | NoSuchFieldException |
IllegalArgumentException | IllegalAccessException e) {
e.printStackTrace();
}
}
}
Path (trên Window):
C:\Users\Public\Test\Test.java
C:\Users\Main\Main.java
- Đầu tiên thì load class thì phải là file .class, chứ file .java thì nó sẽ ko load được, vì vậy cần phải tạo ra file class từ java, ở đây là Test.class từ Test.java
-> dùng lệnh
javac <className.java>
sẽ tạo ra file .class. - Để test thì lần lượt dùng các lệnh sau (test Main bằng cmd luôn cho tiện):
C:\Users\Public\Test>javac Test.java
// generate Test.class
................
C:\Users\Public\Main>java Main
// run Main
-> Result: value = 2days
*** Happy Friday ***
All rights reserved