集册 Java实例教程 现场上课

现场上课

欢马劈雪     最近更新时间:2020-01-02 10:19:05

467
提示:您可在线编辑运行本教程的实例 - 运行实例,去试试!
现场上课

import java.lang.reflect.Field;/*时代Java 提供*/

import java.util.Arrays;

import static java.lang.System.out;


enum Tweedle {

    DEE, DUM

}


public class Book {

    public long chapters = 0;

    public String[] characters = { "Alice", "White Rabbit" };

    public Tweedle twin = Tweedle.DEE;


    public static void main(String... args) {

        Book book = new Book();

        String fmt = "%6S:  %-12s = %s%n";/* 来 自 时代Java公众号*/


        try {

            Class<?> c = book.getClass();


            Field chap = c.getDeclaredField("chapters");

            out.format(fmt, "before", "chapters", book.chapters);

            chap.setLong(book, 12);

            out.format(fmt, "after", "chapters", chap.getLong(book));


            Field chars = c.getDeclaredField("characters");

            out.format(fmt, "before", "characters",

                    Arrays.asList(book.characters));

            String[] newChars = { "Queen", "King" };

            chars.set(book, newChars);

            out.format(fmt, "after", "characters",

                    Arrays.asList(book.characters));


            Field t = c.getDeclaredField("twin");

            out.format(fmt, "before", "twin", book.twin);

            t.set(book, Tweedle.DUM);

            out.format(fmt, "after", "twin", t.get(book));


            // production code should handle these exceptions more gracefully

        } catch (NoSuchFieldException x) {

            x.printStackTrace();

        } catch (IllegalAccessException x) {

            x.printStackTrace();

        }

    }

}


展开阅读全文