
BaseState
public abstract class BaseState <T> { public void subscribe (Listener listener) { } public abstract class Listener { abstract void onUpdate (T val); } } TestState
public class TestState extends BaseState<Music> {} Test
public class Test { void test () { PlayState playState = new PlayState(); // 想这样来使用, 但是报错 PlayState.Listener is not an enclosing class playState.subscribe (PlayState.Listener() { void onUpdate(Music) {} }); } } 如何实例化一个通过继承而来的子抽象类的匿名类?
现在可以通过把 Listener 设置为 interface, 但是使用起来需要再次传递泛型参数
public abstract class BaseState <T> { public void subscribe (Listener listener) { } // interface 里面不能使用 abstract class 的泛型参数 T public interface Listener<T> { void onUpdate (T val); } } 1 billlee May 9, 2018 你的内部类能不能加 static? |
2 SoloCompany May 10, 2018 via iPad playState.new Listener() {} |