简体   繁体   English

android java没有封闭类

[英]android java is not enclosing class

this is my class 这是我的课

 public class mm {

 public  class MessageHandler {
    public HashMap<String, Command> commandMap;

    public MessageHandler() {
        this.commandMap = new HashMap<>();
        commandMap.put("init", new CreateOfferCommand());
        commandMap.put("offer", new CreateAnswerCommand());
        commandMap.put("answer", new SetRemoteSDPCommand());
        commandMap.put("candidate", new AddIceCandidateCommand());
    }

    public Emitter.Listener onMessage = new Emitter.Listener() {
        @Override
        public void call(Object... args) {
            JSONObject data = (JSONObject) args[0];
            try {
                String from = data.getString("from");
                String type = data.getString("type");
                JSONObject payload = null;
                if(!type.equals("init")) {
                    payload = data.getJSONObject("payload");
                }
                // if peer is unknown, try to add him
                if(!peers.containsKey(from)) {
                    // if MAX_PEER is reach, ignore the call
                    int endPoint = findEndPoint();
                    if(endPoint != MAX_PEER) {
                        Peer peer = addPeer(from, endPoint);
                        peer.pc.addStream(localMS);
                        commandMap.get(type).execute(from, payload);
                    }
                } else {
                    commandMap.get(type).execute(from, payload);
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    };

    public Emitter.Listener onId = new Emitter.Listener() {
        @Override
        public void call(Object... args) {
            String id = (String) args[0];
            mListener.onCallReady(id);
        }
    };


    public Emitter.Listener onCall = new Emitter.Listener() {
        @Override
        public void call(Object... args) {
            String id = (String) args[0];
            mListener.onCalling(id);
        }
    };
}
 ......................
 .........
}

and when i call the inner class from another class its give me an enclosing class 当我从另一个类中调用内部类时,给我一个封闭的类

 mm.MessageHandler messageHandler = new mm.MessageHandler();

when i make inner class messageHandler a static the error gone but its shown anothe error inside inner class so can i call the inner class without make it static ? 当我将内部类messageHandler设为静态时,错误消失了,但是内部类内部也显示了错误,因此我可以在不将其设为静态的情况下调用内部类吗?

mm n = new mm(); 
mm.MessageHandler messageHandler = n.new MessageHandler();

or use static in your inner class 或在内部类中使用static

hope that's help 希望有帮助

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM