簡體   English   中英

java-包含並執行外部類

[英]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反映所有子類”,您會發現很多。

您如何在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM