publicclass ModuleSelectionTest { publicstaticvoid main(String... args) throws Throwable { var con = System.console(); var pc = Class.forName("java.io.ProxyingConsole"); var jdkc = Class.forName("jdk.internal.io.JdkConsole"); var istty = (boolean)MethodHandles.privateLookupIn(Console.class, MethodHandles.lookup())
.findStatic(Console.class, "istty", MethodType.methodType(boolean.class))
.invoke(); var impl = con != null ? MethodHandles.privateLookupIn(pc, MethodHandles.lookup())
.findGetter(pc, "delegate", jdkc)
.invoke(con) : null;
var expected = switch (args[0]) { case"java.base" -> istty ? "java.base" : "null"; default -> args[0];
}; var actual = con == null ? "null" : impl.getClass().getModule().getName();
if (!actual.equals(expected)) { thrownew RuntimeException("""
Console implementation is not the expected one.
Expected: %s
Actual: %s """.formatted(expected, actual));
} else {
System.out.printf("%s is the expected implementation. (tty: %s)\n", impl, istty);
}
}
}
Messung V0.5 in Prozent
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.12Bemerkung:
(vorverarbeitet am 2026-10-11)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.