0
我該如何去掃描文件夾中的name.class文件,然後將它們加載到程序中進入數組列表。Java - 搜索一個文件夾並加載.class文件
我對我需要它做什麼有一個總體的想法,我只是不知道我需要用什麼來在代碼中實現它。
掃描文件夾 找到加載的.class文件 使用array.add(new class(params))將類添加到ArrayList中; 畢竟運行了類中的方法。
這是當前情況下我都能加載模塊(如果他們甚至被稱爲是)到客戶端
package pro.skid.Gabooltheking.Module;
import java.util.ArrayList;
public class ModuleLoader {
public static ArrayList<Module> module = new ArrayList<Module>();
public final ArrayList<Module> getModule(){ return module; }
public static void startModule(){
module.clear();
}
public final Module getModuleByName(String moduleName){
for(Module module : getModule()){
if(module.getName().equalsIgnoreCase(moduleName)){ return module; }
}
return null;
}
public static void keyBind(int key){
for(Module m : module){
if(m.getKey() == key){
m.toggle();
}
}
}
public static void runModuleTick(){
for(Module m : module){
if(m.getState()){
m.onTick();
}
}
}
}
這是抽象的模塊類看起來像
package pro.skid.Gabooltheking.Module;
public abstract class Module {
int key,color;
String name;
boolean state;
/**
* Set's the following variables
* @param name- name of mod
* @param key- keybind for mod
* @param color- color in gui
*/
public Module(String name, int key, int color){
this.name = name;
this.key = key;
this.color = color;
}
/**
* Set's the state of the mod to on or off.
*/
public void toggle()
{ state = !state;
if(this.getState())
{
this.onToggle();
}else{
this.onDisable();
}
}
/**
* Does something when mod is first toggled.
* Does it only once.
*/
public abstract void onToggle();
/**
* Does something when mod is disabled.
* Does it only once.
*/
public abstract void onDisable();
/**
* Does something when mod is toggled.
* Loops untill hack is disabled.
*/
public abstract void onTick();
public String getName(){return this.name; }
public int getKey(){ return this.key; }
public int getColor(){ return this.color; }
public boolean getState(){ return this.state; }
}
系統
在我看來,所有的幫助都是很好的幫助。還要忽略蹩腳的評論,這對我來說更重要的是要記住每種方法的作用。
似乎你正在重新發明一個類加載器?你爲什麼需要這樣做? – Ayman
這不是我最初的目標。目前我加載mod的方法是手動將它們添加到.jar中,並通過module.add(new class(params))手動將它們添加到arraylist中;我希望它只是將.class文件放到文件夾中,它會自動加載它們,而不需要我自己添加任何.class文件。 – user2563088
如果該文件夾位於類路徑中,則簡單的Class.forName將爲您加載該類。 – Ayman