class Main { privatestaticboolean z = true; privatestaticbyte b = 8; privatestaticchar c = '\u2714'; privatestaticdouble d = Math.PI; privatestaticfloat f = 3.14f; privatestaticint i = 32; privatestaticlong j = 0x0123456789abcdefL; privatestaticshort s = 16;
publicstaticvoid testFieldReflection() throws Exception {
Field f;
f = Main.class.getDeclaredField("z");
System.out.println(f.getBoolean(null));
f = Main.class.getDeclaredField("b");
System.out.println(f.getByte(null));
f = Main.class.getDeclaredField("c");
System.out.println(f.getChar(null));
f = Main.class.getDeclaredField("d");
System.out.println(f.getDouble(null));
f = Main.class.getDeclaredField("f");
System.out.println(f.getFloat(null));
f = Main.class.getDeclaredField("i");
System.out.println(f.getInt(null));
f = Main.class.getDeclaredField("j");
System.out.println(f.getLong(null));
f = Main.class.getDeclaredField("s");
System.out.println(f.getShort(null));
f = Main.class.getDeclaredField("z");
f.setBoolean(null, false);
f = Main.class.getDeclaredField("b");
f.setByte(null, (byte) 7);
f = Main.class.getDeclaredField("c");
f.setChar(null, 'y');
f = Main.class.getDeclaredField("d");
f.setDouble(null, 2.7);
f = Main.class.getDeclaredField("f");
f.setFloat(null, 2.7f);
f = Main.class.getDeclaredField("i");
f.setInt(null, 31);
f = Main.class.getDeclaredField("j");
f.setLong(null, 63);
f = Main.class.getDeclaredField("s");
f.setShort(null, (short) 15);
f = Main.class.getDeclaredField("z");
System.out.println(f.getBoolean(null));
f = Main.class.getDeclaredField("b");
System.out.println(f.getByte(null));
f = Main.class.getDeclaredField("c");
System.out.println(f.getChar(null));
f = Main.class.getDeclaredField("d");
System.out.println(f.getDouble(null));
f = Main.class.getDeclaredField("f");
System.out.println(f.getFloat(null));
f = Main.class.getDeclaredField("i");
System.out.println(f.getInt(null));
f = Main.class.getDeclaredField("j");
System.out.println(f.getLong(null));
f = Main.class.getDeclaredField("s");
System.out.println(f.getShort(null));
f = Main.class.getDeclaredField("z");
f.set(null, Boolean.valueOf(true));
f = Main.class.getDeclaredField("b");
f.set(null, Byte.valueOf((byte) 6));
f = Main.class.getDeclaredField("c");
f.set(null, Character.valueOf('z'));
f = Main.class.getDeclaredField("d");
f.set(null, Double.valueOf(1.3));
f = Main.class.getDeclaredField("f");
f.set(null, Float.valueOf(1.3f));
f = Main.class.getDeclaredField("i");
f.set(null, Integer.valueOf(30));
f = Main.class.getDeclaredField("j");
f.set(null, Long.valueOf(62));
f.set(null, Integer.valueOf(62));
f = Main.class.getDeclaredField("s");
f.set(null, Short.valueOf((short) 14));
f = Main.class.getDeclaredField("z");
System.out.println(f.getBoolean(null));
f = Main.class.getDeclaredField("b");
System.out.println(f.getByte(null));
f = Main.class.getDeclaredField("c");
System.out.println(f.getChar(null));
f = Main.class.getDeclaredField("d");
System.out.println(f.getDouble(null));
f = Main.class.getDeclaredField("f");
System.out.println(f.getFloat(null));
f = Main.class.getDeclaredField("i");
System.out.println(f.getInt(null));
f = Main.class.getDeclaredField("j");
System.out.println(f.getLong(null));
f = Main.class.getDeclaredField("s");
System.out.println(f.getShort(null));
try {
f = Main.class.getDeclaredField("s");
f.set(null, Integer.valueOf(14));
System.out.println("************* should have thrown!");
} catch (IllegalArgumentException expected) {
System.out.println("got expected IllegalArgumentException");
}
f = Main.class.getDeclaredField("z");
show(f.get(null));
f = Main.class.getDeclaredField("b");
show(f.get(null));
f = Main.class.getDeclaredField("c");
show(f.get(null));
f = Main.class.getDeclaredField("d");
show(f.get(null));
f = Main.class.getDeclaredField("f");
show(f.get(null));
f = Main.class.getDeclaredField("i");
show(f.get(null));
f = Main.class.getDeclaredField("j");
show(f.get(null));
f = Main.class.getDeclaredField("s");
show(f.get(null));
publicstaticvoid testMethodReflection() throws Exception {
Comparator<Object> comp = new Comparator<Object>() { publicint compare(Object a, Object b) { return a.toString().compareTo(b.toString());
} publicboolean equals(Object b) { returnthis == b;
}
};
// Filter out methods that D8 or R8 may generate for internal use.
Predicate<Method> filterGenerated = new Predicate<Method>() { publicboolean test(Method m) {
String name = m.getName(); return !name.startsWith("lambda$") && !name.startsWith("$r8$");
}
};
// Sort the return values by their string values since the order is undefined by the spec.
System.out.println(Arrays.toString(sort(String.class.getDeclaredConstructors(), comp)));
System.out.println(Arrays.toString(sort(String.class.getDeclaredFields(), comp)));
System.out.println(Arrays.toString(sort(
Arrays.stream(String.class.getDeclaredMethods()).filter(filterGenerated).toArray(),
comp)));
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.