2014-10-21 3 views
0

У меня естьJava Callbacks - захватный аргумент

public interface CallBack<T> { 

public interface Callback<T> { 
    public void callback(T t); 
} 

public void isRegistered(final String username, final Callback<Boolean> callback){ 
PreparedStatement perparedStatement = connection.prepareStatement("SELECT name FROM " + table + "  WHERE name = ?"); 
        perparedStatement.setString(1, username); 
        if(perparedStatement.executeQuery().next()){ 
         perparedStatement.close(); 
         registeredCache.put(username, true); 
        }else{ 
         perparedStatement.close(); 
         registeredCache.put(username, false); 
        } 
        usingMySQL--; 
        if(usingMySQL == 0){ 
         closeConnection(); 
        } 
        callback.callback(registeredCache.get(registeredCache.get(username))); 

Но я падаю, чтобы узнать, как получить доступ аргумент. Первый раз с обратным вызовом.

Lobby.instance.MySQL.isRegistered(sender.getName(), new CallBack<Boolean>(){ 

         @Override 
         public void CallBack(){ 

         } 
        }); 

Мой приятель пытался объяснить, но он сказал, что он слишком плохо объясняя это и попросил меня спросить здесь. Интерфейс находится в другом классе для общедоступного метода void.

ответ

2

Если интерфейс:

public interface Callback<T> { 
    public void callback(T t); 
} 

Тогда единственный способ осуществить это будет производить класс, который реализует метод callback. Предположим, что параметр типа Boolean, то переопределение будет

Callback<Boolean> callback = new Callback<Boolean>() { 
    @Override 
    public void callback(Boolean parameter) { 
     // your code here 
    } 
};