在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