Constructor in an Interface?

前端 未结 11 1058
鱼传尺愫
鱼传尺愫 2020-12-02 06:38

I know it\'s not possible to define a constructor in an interface. But I\'m wondering why, because I think it could be very useful.

So you could be sure that some fi

11条回答
  •  無奈伤痛
    2020-12-02 07:18

    Here´s an example using this Technic. In this specifik example the code is making a call to Firebase using a mock MyCompletionListener that is an interface masked as an abstract class, an interface with a constructor

    private interface Listener {
        void onComplete(databaseError, databaseReference);
    }
    
    public abstract class MyCompletionListener implements Listener{
        String id;
        String name;
        public MyCompletionListener(String id, String name) {
            this.id = id;
            this.name = name;
        }
    }
    
    private void removeUserPresenceOnCurrentItem() {
        mFirebase.removeValue(child("some_key"), new MyCompletionListener(UUID.randomUUID().toString(), "removeUserPresenceOnCurrentItem") {
            @Override
            public void onComplete(DatabaseError databaseError, DatabaseReference databaseReference) {
    
            }
        });
        }
    }
    
    @Override
    public void removeValue(DatabaseReference ref, final MyCompletionListener var1) {
        CompletionListener cListener = new CompletionListener() {
                    @Override
                    public void onComplete(DatabaseError databaseError, DatabaseReference databaseReference) {
                        if (var1 != null){
                            System.out.println("Im back and my id is: " var1.is + " and my name is: " var1.name);
                            var1.onComplete(databaseError, databaseReference);
                        }
                    }
                };
        ref.removeValue(cListener);
    }
    

提交回复
热议问题