寻找由特定字符组成的旧的,过时的单词的系统同义词

问题描述 投票:1回答:1

在下面发布的代码中,HTEsotericPoliticsOfTheWest是一个内部类,当我尝试定义接口时,由于接口不是固定的,eclipse会产生错误!您能否解释一下为什么必须在内部类的上下文中声明接口为ststic?

**代码:

//This is an inner-class
private class HTEsotericPoliticsOfTheWest extends HandlerThread {

    private final String TAG = HTEsotericPoliticsOfTheWest.class.getSimpleName();
    private Handler _mHandler = null;

    //#constructor(s)
    public HTEsotericPoliticsOfTheWest(String name) {
        super(name);
    }
    public HTEsotericPoliticsOfTheWest(String name, int priority) {
        super(name, priority);
    }

    public void enqueueTaskForNorthGroup(String token) {
        Message msg = Message.obtain();
        msg.obj = token;
    }

    //********ISSUE IS HERE***********
    interface Isynchronizer {
        void filteredNews();
    }

    public void enqueueTaskForEastGroup(String token) {
    }
    //#handlers-instances
    public Handler getInitedHandlerInstanceForNorthGroup() {
        return new Handler(getLooper(), new HandlerCallbackNorthGroup());
    }
    public Handler getInitedHandlerInstanceForEastGroup() {
        return new Handler(getLooper(), new HandlerCallbackEastGroup());
    }

    //#run
    @Override
    public void run() {
        super.run();
        Log.w(TAG, "run");
    }


    @Override
    protected void onLooperPrepared() {
        super.onLooperPrepared();
        Log.w(TAG, "onLooperPrepared");
    }

    //#termination-methods
    @Override
    public boolean quit() {
        return super.quit();
    }

    @Override
    public boolean quitSafely() {
        return super.quitSafely();
    }

    //#handlers-callbacks classes
    private class HandlerCallbackNorthGroup implements Handler.Callback {

        @Override
        public boolean handleMessage(Message msg) {
            String token = (String) msg.obj;
            int s;

            switch (token) {
                case NORTH_GROUP_PRESEDENTIAL_1:
                    s = 3;
                    try {
                        TimeUnit.SECONDS.sleep(3);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    Log.i("", s + " elapsed");
                    break;
                case NORTH_GROUP_EDUCATIONAL_PRIVATE_1:
                    s = 7;
                    try {
                        TimeUnit.SECONDS.sleep(7);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    Log.i("", s + " elapsed");
                    break;
                case NORTH_GROUP_GEOGRAPHICAL_1:
                    s = 10;
                    try {
                        TimeUnit.SECONDS.sleep(10);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    Log.i("", s + " elapsed");
                    break;
                case NORTH_GROUP_MARINE_1:
                    s = 13;
                    try {
                        TimeUnit.SECONDS.sleep(13);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    Log.i("", s + " elapsed");
                    break;
            }
            return false;
        }
    }


    //Q:is it achievable/feasible to pass/communicate between two Handlers?one is in the mainAct while the other is in an inner class?
    private class HandlerCallbackEastGroup implements Handler.Callback {

        @Override
        public boolean handleMessage(Message msg) {
            return false;
        }
    }
}
java oop inner-classes
1个回答
0
投票

由于接口不是静态的,eclipse产生了错误!

当接口以另一种类型嵌套时,它是static成员。但是,问题在于内部类不能声明静态成员。这是导致错误的组合。

在内部类上,Java Language Specification甚至是关于接口的特定说明:

8.1.3。内部类和封闭实例

内部类可能未声明静态初始化程序(§8.7)或成员接口,否则会发生编译时错误。

内部类不得声明静态成员,除非它们是常量变量(第4.12.4节),否则会发生编译时错误。

您可能有兴趣阅读JLS 14的版本,该版本经过改写以指定嵌套接口作为该类的成员是隐式静态的;并且不允许内部类声明静态(显式或隐式地)成员。

© www.soinside.com 2019 - 2024. All rights reserved.