vmabstractclassloader.java
来自「纯java操作系统jnode,安装简单和操作简单的个人使用的Java操作系统」· Java 代码 · 共 66 行
JAVA
66 行
/*
* $Id: VmAbstractClassLoader.java,v 1.3 2004/02/20 08:21:02 epr Exp $
*/
package org.jnode.vm;
import java.security.ProtectionDomain;
import org.jnode.vm.classmgr.ClassDecoder;
import org.jnode.vm.classmgr.SelectorMap;
import org.jnode.vm.classmgr.VmClassLoader;
import org.jnode.vm.classmgr.VmType;
/**
* @author Ewout Prangsma (epr@users.sourceforge.net)
*/
abstract class VmAbstractClassLoader extends VmClassLoader {
/**
* @see org.jnode.vm.classmgr.VmClassLoader#defineClass(java.lang.String, byte[], int, int, java.security.ProtectionDomain)
*/
public final VmType defineClass(String name, byte[] data, int offset, int length, ProtectionDomain protDomain) {
VmType vmClass = ClassDecoder.defineClass(name, data, offset, length, true, this);
name = vmClass.getName();
if (!isSystemClassLoader()) {
if (name.startsWith("org.jnode.vm") || name.startsWith("java.lang")) {
throw new SecurityException("Only the system classloader can load this class");
}
}
addLoadedClass(name, vmClass);
return vmClass;
}
/**
* Load an array class with a given name
*
* @param name
* @param resolve
* @return VmClass
* @throws ClassNotFoundException
*/
protected final VmType loadArrayClass(String name, boolean resolve) throws ClassNotFoundException {
VmType compType;
String compName = name.substring(1);
if ((compName.charAt(0) == 'L') && (compName.charAt(compName.length() - 1) == ';')) {
compName = compName.substring(1, compName.length() - 1);
compType = loadClass(compName, resolve);
return compType.getArrayClass();
} else if (compName.charAt(0) == '[') {
compType = loadClass(compName, resolve);
return compType.getArrayClass();
} else {
return VmType.getPrimitiveArrayClass(compName.charAt(0));
}
}
protected abstract SelectorMap getSelectorMap();
/**
* Add a class that has been loaded.
*
* @param name
* @param cls
*/
public abstract void addLoadedClass(String name, VmType cls);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?