我正在为学生代码编写自动分级器。每个学生班级都被命名为相同的东西(选择)。它们都在同一个文件夹中。我试图弄清楚如何重置对象,以便在创建新对象时,它实际上使用了新对象。
我尝试过的事情:
问题似乎是java缓存Selection类对象,因此每次运行它时,它都使用第一个Selection类,而不是新编译的类。
我的问题是:如何重置java以摆脱java中类的缓存,这样当我编译另一个同名文件时,它实际上会使用新的对象类型?
答案 0 :(得分:2)
我建议您将它们放在不同的文件夹中,或者放在临时文件夹中,如果您一次处理它们。
如果要在不重新启动JVM的情况下加载新版本的类,则必须将这些类放入不同的ClassLoader中。
但是,如果一个学生做了一些hacky,他们可以阻止其他学生的代码运行。避免这种情况的最佳方法是在其自己的JVM中运行每个替换以避免污染。
例如,我可以将(Integer) 0
更改为等于(Integer) 1
或更改“Hello”以打印“G'Day”,想象一下您可以做什么。 ;)