Files
corejava/corejava第10版/v2ch08/compiler/MapClassLoader.java
T
2019-05-22 19:31:49 +08:00

29 lines
758 B
Java

package compiler;
import java.util.*;
/**
* A class loader that loads classes from a map whose keys are class names and whose values are byte
* code arrays.
* @version 1.00 2007-11-02
* @author Cay Horstmann
*/
public class MapClassLoader extends ClassLoader
{
private Map<String, byte[]> classes;
public MapClassLoader(Map<String, byte[]> classes)
{
this.classes = classes;
}
protected Class<?> findClass(String name) throws ClassNotFoundException
{
byte[] classBytes = classes.get(name);
if (classBytes == null) throw new ClassNotFoundException(name);
Class<?> cl = defineClass(name, classBytes, 0, classBytes.length);
if (cl == null) throw new ClassNotFoundException(name);
return cl;
}
}