学生は、バイト コードではなく、Java ソース コードを提出します。Java ソース コードは、クラスローダでロードする前に、Java コンパイラを使用してバイト コードにコンパイルする必要があります。プログラムでコンパイラを呼び出すことでこれを行うことができます (この回答を参照してください)。.class実行時にこの新しいファイルのバイト コードをロードするには、次のようにします。
class NetworkClassLoader extends ClassLoader {
String host;
int port;
public Class findClass(String name) {
byte[] b = loadClassData(name);
return defineClass(name, b, 0, b.length);
}
private byte[] loadClassData(String name) {
// load the class data from the connection
. . .
}
}
(ここからの例、ありがとう@Robert)。
インスタンスを取得したら、それをテスト アプリにフィードして、いくつかのテストを実行し、結果を得ることができます。
サブミットされたクラスに、定義したインターフェイスを実装させ、そのインターフェイスに対してテスト コードをテストさせるのが最も簡単です。そうすれば、テストは事前にコンパイルされ、実行時に動的にコンパイルおよびインスタンス化された送信を引き続き処理できます。