25 lines
1.1 KiB
Java
25 lines
1.1 KiB
Java
import java.lang.reflect.Method;
|
|
import java.lang.reflect.Modifier;
|
|
import java.util.*;
|
|
|
|
/** Asks the running JDK which public sun.misc.Unsafe methods are deprecated for removal. Run: java tools/ListUnsafe.java */
|
|
public class ListUnsafe {
|
|
public static void main(String[] args) throws Exception {
|
|
List<String> kept = new ArrayList<>();
|
|
int removal = 0, total = 0;
|
|
for (Method m : Class.forName("sun.misc.Unsafe").getDeclaredMethods()) {
|
|
if (!Modifier.isPublic(m.getModifiers())) continue;
|
|
total++;
|
|
Deprecated d = m.getAnnotation(Deprecated.class);
|
|
if (d != null && d.forRemoval()) removal++;
|
|
else kept.add(m.getName() + (d != null ? " (deprecated, not for removal)" : ""));
|
|
}
|
|
Collections.sort(kept);
|
|
System.out.println("java.version=" + System.getProperty("java.version"));
|
|
System.out.println("public methods declared by sun.misc.Unsafe: " + total);
|
|
System.out.println("deprecated for removal: " + removal);
|
|
System.out.println("not deprecated for removal: " + kept.size());
|
|
kept.forEach(k -> System.out.println(" " + k));
|
|
}
|
|
}
|