Why does adding a public field to an anonymous class in Java not work?

后端 未结 8 1590
渐次进展
渐次进展 2020-12-17 15:48

I have an example class defined like below:

public class FooBar {

  void method1(Foo foo){ // Should be overwritten
    ...
  }

}

Later,

8条回答
  •  野趣味
    野趣味 (楼主)
    2020-12-17 16:36

    Try this.

    @SafeVarargs
    public static  void runWithObject(T object, Consumer... progs) {
        for (Consumer prog : progs)
            prog.accept(object);
    }
    

    and

    runWithObject(
        new FooBar() {
            String name = null;
            @Override
            void method1(Foo foo) {
                System.out.println("name=" + name);
            }
        },
        object -> object.name = "Test",
        object -> object.method1(new Foo())
    );
    

    result:

    name=Test
    

    Or you can use var like this in Java 10 or later.

    var fooBar = new FooBar() {
        public String name = null;
    
        @Override
        void method1(Foo foo) {
            System.out.println("name=" + name);
        }
    };
    fooBar.name = "Test";
    fooBar.method1(new Foo());
    

提交回复
热议问题