在Java中,我希望能夠從文件加載方法。用這種方法用戶可以自定義方法。用戶可以創建一個txt文件,在其中輸入普通的Java方法,然後將其加載到程序中。我知道Reflection,但我不知道有什麼方法來閱讀這樣的方法。該程序將執行它就像它是一個內置的方法。有沒有反正這樣做?如何從文件中讀取方法
我想這樣做,以便用戶可以自定義計算結果,創建值在屏幕上顯示的東西。這裏是我現有的方法:
void setScale() {
int windowDiagonal = (int) Math.sqrt(comp.getWidth() * comp.getWidth() + comp.getHeight() * comp.getHeight());
double scale = windowDiagonal/2500.0;
placeWidth = (int) (comp.getWidth()/2.5);//(int) (800 * scale);
arrowLineSize = (int) (20*scale);
lineSize = (int) (10*scale);
arrowSize = (int) (40*scale);
arrowHeight = (int) (100 * scale);
arrowNameGap = (int) (10 * scale);
roundRaceGap = (int) (50 * scale);
roundRaceLineGap = (int) (30 * scale);
leftLightGap = (int) (20 * scale);
lightSize = (int) (200 * scale);
lightTextGap = (int) (20 * scale);
lightToGapRatio = 5;// (int) (5 * scale);// TODO Maybe???
lineWinnerGap = (int) (10 * scale);
nameTimeGap = (int) (10 * scale);
//Bottom
lineNextUpGap = (int) (10 * scale);
nextUpNextUpTitleGap = (int) (10 * scale);
nextUpTitleNextUpGap = (int) (10 * scale);
nextUpAfterNextUpGap = (int) (10 * scale);
afterNextUpBottomGap = (int) (100 * scale);
titleRoundRaceGap = (int) (20 * scale);
topTitleGap = (int) (20 * scale);
winnerArrowGap = (int) (40 * scale);
comp.setFont(new Font("Arial", Font.BOLD, (int) (60 * scale))); //$NON-NLS-1$
}
問題是,如果用戶想讓placeWidth,說一半的屏幕,該怎麼辦。如果他們希望它的高度除以寬度的一半,會怎麼樣?由於這是該程序的一項高級功能,因此我不想繞過製作文本字段和單選按鈕來執行所有可能的操作。相反,人們可以更改計算值的代碼,以便他們有更多的自由。
這不容易做,我不知道你的問題是否可能[XY問題](http://mywiki.wooledge.org/XyProblem)。這個請求的目的是什麼?也許有更好的方法來解決你的整體問題。 – 2014-09-23 11:59:12
看看Java反射!我添加了更多信息的答案。 – mrquad 2014-09-23 11:59:22