在构造函数参数中创建一个匿名类传递并实现其接口

时间:2015-09-14 07:50:29

标签: java

java version "1.7.0_45"

您好,

具有构造函数参数的类,该参数具有将在客户端

中实现的接口
public class SInvitationListenerImp {
    public interface MUCRoomListener {
        void onInvitationReceived(String roomName, String inviter, String reason, String password, String message);
    }

    public SInvitationListenerImp(MUCRoomListener roomListenerEvent, int clientConnection) {
        mMUCRoomListener = roomListenerEvent;
        mClientConnection = clientConnection;
    }
}

在我的客户端中,我可以在构造函数参数中创建一个匿名类传递并实现接口。

然而,这并不适用于争论

new SInvitationListenerImp(MainActivity.this, connection).MUCRoomListener() {
            @Override
            public void onInvitationReceived(String s, String s1, String s2, String s3, String s4) {

            }
        };

这没有构造函数参数。但是,需要这些论点(所以这个woudn不能满足我的需要)

new SInvitationListenerImp.MUCRoomListener() {
      @Override
          public void onInvitationReceived(String s, String s1, String s2, String s3, String s4) {
      }
};

是否可以将参数传递给构造函数并实现接口?

非常感谢任何建议

更新结果为'.' or ')' expected

new SInvitationListenerImp(new SInvitationListenerImp.MUCRoomListener() {
        @Override
        public void onInvitationReceived(String s, String s1, String s2, String s3, String s4) {
        }
    } MainActivity.this, connection);

1 个答案:

答案 0 :(得分:2)

你的语法错了......你可能需要这样的东西,

new SInvitationListenerImp(new SInvitationListenerImp.MUCRoomListener() {
            @Override
            public void onInvitationReceived(String s, String s1, String s2, String s3, String s4) {
                // Interface method body.
            }

        }, connection);