carregador de classe personalizada
1, o carregador de classe é capaz de carregar no JVM class, carregado na classe de objecto do objecto, é responsável para a leitura de código de bites Java, e convertida em uma instância da classe java.lang.Class tipos de carregadora classe, ele tem de ser carregado.
2, o carregador de classe carregamento:
1) carregamento implicitamente stu Student = novo Student (), utilizando o carregador de classe JDK nativo;
2) por Class.forName ( "com.javaee.Student"); ( JDBC conector bases de dados semelhantes).
arquivo 3) pode ser carregado a partir da classe sufixo definido, garantia para obter o servidor que está sendo atacado não está disponível, desempenhar um papel na proteção.
3, usado para servidores, processamento remoto.
exemplo:
public class Demo01 {
public static void main(String[] args) throws Exception{
MessageClassLoader messageClassLoader = new MessageClassLoader();
String kindName = "com.tx.test.classloader.Message";
Class<?> clazz = messageClassLoader.loadData(kindName);
Object object = clazz.getDeclaredConstructor().newInstance();
Method method = object.getClass().getDeclaredMethod("print",String.class);
method.invoke(object,"www.baidu.com");
}
}
//自定义类加载器
class MessageClassLoader extends ClassLoader {
public Class<?> loadData(String kindName) {
String addressName = "E:" + File.separator + "IDEA_JavaSE练习" + File.separator + "类加载器"
+ File.separator + "src" + File.separator + kindName.replace(".", File.separator) + ".class";
try {
InputStream in = new FileInputStream(new File(addressName));
int len = in.available();
byte[] data = new byte[len];
int read = in.read(data, 0, len);
return this.defineClass(kindName, data, 0, len);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
resultados:
send Show:www.baidu.com