我正在开发一个程序来标记一组学生提交的算法;每个学生都会提交自己的.java文件。
我想将这些.java文件放入一个文件夹并运行我的程序。然后我的程序将实例化文件夹中的每个类并将其添加到arrayList,以便我可以在自己的代码中运行它们的代码。
无论如何我能做到这一点,还是这样的?注意:我不知道学生的确切数量。任何帮助将不胜感激。
更新:我试图实施Jegg的解决方案;但是,我的TeamMakerTester类无法识别Team1类的主要方法。这是错误:
error: cannot find symbol
cls.main();
^
symbol: method main()
location: variable cls of type Class
1 error
非常感谢任何帮助,这里的代码是Team1是学生提交的代码:
public class TeamMakerTester{
public static void main(String[] args){
ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider(true);
provider.addIncludeFilter(new AssignableTypeFilter(Team.class));
// scan in org.example.package
Set<BeanDefinition> components = provider.findCandidateComponents("org/mysteryhobo/algorithms");
for (BeanDefinition component : components)
{
try{
Class cls = Class.forName(component.getBeanClassName());
cls.main();
} catch (ClassNotFoundException cnfe){
System.out.println("Error: Class not found");
}
}
}
public class Team1 extends Team{
private String teamName = "Team1";
private String move; // try removing
public String getTeamName(){
return teamName;
}
public static void main(String[] args){
Team1 algo = new Team1();
algo.runGame();
}...
public class Team{}
答案 0 :(得分:1)
您好我不确定这是您想要的,但我认为这是关于如何获取文件夹中的所有课程,一旦获得它们,您就可以轻松地在您的程序中运行。
首先,您不能要求您的学生使用相同的文件名,因为他们不能放入同一个文件夹。
然后你可以考虑在Spring框架中使用一个名为ClassPathScanningCandidateComponentProvider的类,它可以扫描pacakge中的类:
AppCompatActivity
如果学生在其文件中有主要方法,则调用Student Class.main(arguments);