package org.nutz.aop;
/**
* 根据字节码,定义一个 Class 文件
* <p>
* 它就是一种 ClassLoader,如果已经定义过的 Class,它将不再重复定义
*
* @author zozoh(zozohtnt@gmail.com)
*/
public interface ClassDefiner {
/**
* 根据字节码,定义一个 Class 文件,如果已经定义过的 Class,它将不再重复定义
*
* @param className
* 一个类的全名
* @param bytes
* 字节码
* @return 类对象
* @throws ClassFormatError
* 字节码格式错误
*/
Class<?> define(String className, byte[] bytes) throws ClassFormatError;
/**
* @param className
* 一个类全名
* @return 是否在缓存中存在这个类的定义
*/
boolean has(String className);
/**
* @param className
* 一个类的全名
* @return 缓存中的类定义
* @throws ClassNotFoundException
* 如果缓存中没有这个类定义
*/
Class<?> load(String className) throws ClassNotFoundException;
}