[英]java - Include and execute external classes
這與BrainF * ck無關。 請參閱最后一節中的“最終”問題。
非常抱歉,如果以前曾有人問過這個問題,但我只是找不到以前有人問過的頁面。
我基本上已經建立了一個Java項目,讓您編寫BrainF * ck代碼然后執行它。 對於那些不知道的人,BrainF * ck是一種非常簡單的編程語言,僅使用一個字符的命令。
我將其設置為所有已實現的字母都有擴展到Token超類的各個類。
public abstract class Token {
private final char token;
public Token(char c) {
this.token = c;
}
public final char getToken() {
return token;
}
public abstract void tokenCalled();
}
因此,例如,對於令牌“ +”,我將像這樣設置類。
public class PlusToken extends Token {
public PlusToken() {
super('+');
}
@Override
public void tokenCalled() {
//increment value by 1
}
}
這一切都很棒。
現在,對於我的項目,我希望用戶能夠創建自己的類並將其放在預先存在的文件夾中,我的程序將在該文件夾中遍歷這些類並將這些Token包含到我的項目中。 我設置了一個包含所有令牌的arraylist,所以我唯一的問題是: 如何讀取這些類,檢查它們是否為Token的實例,並將其保存在我的arraylist中以使用它們?
這是關於Java的反思。 搜索關鍵字:“ java反映所有子類”,您會發現很多。
“ ClassPathScanningCandidateComponentProvider”答案可能滿足您的需求。
但我認為,這里有一些簡單的方法。 像下面這樣的事情可以簡單地完成工作:
public abstract class Token {
public static HashMap<Character, Class<Token>> all = new HashMap<Character, Class<Token>>();
private final char token;
public Token(char c) {
this.token = c;
all.put(c, this.getClass());
}
public final char getToken() {
return token;
}
public abstract void tokenCalled();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.