forName
是 Java 反射機制中的一個方法,用于動態加載類并返回該類的 Class
對象。通過使用 forName
,我們可以實現插件化架構,讓應用程序在運行時動態加載和執行插件。
以下是實現插件化架構的步驟:
Plugin
的接口,其中包含一個名為 execute
的方法。public interface Plugin {
void execute();
}
MyPlugin
的類,實現 Plugin
接口,并重寫 execute
方法。public class MyPlugin implements Plugin {
@Override
public void execute() {
System.out.println("MyPlugin is executing...");
}
}
plugins.properties
的配置文件,并添加以下內容:myPlugin=com.example.MyPlugin
forName
方法動態加載插件。首先,需要讀取配置文件,獲取插件類的全限定名。然后,使用 Class.forName
方法加載插件類,并創建插件實例。最后,調用插件的 execute
方法執行插件。import java.io.IOException;
import java.util.Properties;
public class PluginManager {
public static void main(String[] args) {
Properties properties = new Properties();
try {
properties.load(PluginManager.class.getResourceAsStream("/plugins.properties"));
} catch (IOException e) {
e.printStackTrace();
}
String pluginClassName = properties.getProperty("myPlugin");
try {
Class<?> pluginClass = Class.forName(pluginClassName);
Plugin plugin = (Plugin) pluginClass.newInstance();
plugin.execute();
} catch (ClassNotFoundException | IllegalAccessException | InstantiationException e) {
e.printStackTrace();
}
}
}
這樣,應用程序就可以在運行時動態加載和執行插件了。當需要添加新的插件時,只需實現插件接口,并將插件類的全限定名注冊到配置文件中即可。