From 38453c5e315ec45a522ec55254f88f320b018601 Mon Sep 17 00:00:00 2001 From: Anko <52566311+Smartdousha@users.noreply.github.com> Date: Thu, 17 Nov 2022 08:54:47 +0800 Subject: [PATCH] =?UTF-8?q?doc:=20=E6=B7=BB=E5=8A=A0=20java=E5=8F=8D?= =?UTF-8?q?=E5=B0=84:white=5Fcheck=5Fmark:=20(#103)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/java.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/docs/java.md b/docs/java.md index 4416523..2a80f14 100644 --- a/docs/java.md +++ b/docs/java.md @@ -783,6 +783,26 @@ try { } ``` +### 反射 + +```java +/** +* 利用反射动态加载依赖库 +* java9及以上版本可用 +* @param jar jar文件 +*/ +Method method = URLClassLoader.class.getDeclaredMethod("addURL", URL.class); +method.setAccessible(true); +MethodHandle addURL = lookup.unreflect(method); +URL url = jar.toURI().toURL(); +URLClassLoader urlClassLoader = new URLClassLoader(new URL[] {url}); +addURL.invoke(urlClassLoader, url); +//java8 +Method method = URLClassLoader.class.getDeclaredMethod("addURL", URL.class); +method.setAccessible(true); +method.invoke(classLoader, url); +``` + ### util工具类 - `ArrayDeque` 提供 resizable-array 并实现 Deque 接