2015-03-02 35 views
0

我對Java有新的瞭解。 我想要做的是試圖創建可重用的泛型類。 這是我的代碼。如何使用java創建通用和可重用代碼

public interface Operation { 
Boolean IsConnected(); 
Boolean ConnectionOpen(); 
Boolean ConnectionClose(); 
} 

我的主類

public class MyConnectionManager extends MyWifi{ 

    private MyWifi _wf; 

    public MyConnectionManager(MyWifi wf) { 
     // TODO Auto-generated constructor stub 
     _wf= wf; 
    } 

    public Boolean IsConnected() { 
     // TODO Auto-generated method stub 
     return _wf.IsConnected(); 
    } 


    public Boolean ConnectionOpen() { 
     // TODO Auto-generated method stub 
     return _wf.ConnectionOpen(); 
    } 


    public Boolean ConnectionClose() { 
     // TODO Auto-generated method stub 
     return _wf.ConnectionClose(); 
    } 
} 




public class MyWifi implements Operation { 

    public Context _context =null; 


    @Override 
    public Boolean IsConnected() { 
     // TODO Auto-generated method stub 

     ConnectivityManager connManager = (ConnectivityManager) _context.getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 

     if (mWifi.isConnected()) { 

    return true; 
     } 
     return false; 
    } 

,但我希望它是通用的,可重複使用,作爲類型應該是多變的。例如,而不是MyWifi,也可能是MyBlueTooth(其中實現相同的接口) 等等。

以下是試圖存檔的內容。

MyWifi wf = new MyWifi(); 
//MyBlueTooth bl= new MyBlueTooth(); 
MyConnectionManager<MyWifi> mn= new MyConnectionManager<MyWifi>(wf); 
mn.IsConnected(); 

回答

1

你的意思是這樣的事?

public class MyConnectionManager<E extends Operation>{ 

private E _wf; 

public MyConnectionManager(E wf) { 
    // TODO Auto-generated constructor stub 
    _wf= wf; 
} 

public Boolean IsConnected() { 
    // TODO Auto-generated method stub 
    return _wf.IsConnected(); 
} 


public Boolean ConnectionOpen() { 
    // TODO Auto-generated method stub 
    return _wf.ConnectionOpen(); 
} 


public Boolean ConnectionClose() { 
    // TODO Auto-generated method stub 
    return _wf.ConnectionClose(); 
} 

}

public class Starter { 
public static void main(String[] args) { 
    MyBlueTooth bt = new MyBlueTooth(); 
    MyWifi wf = new MyWifi(); 
    MyConnectionManager<MyBlueTooth> test = new MyConnectionManager<MyBlueTooth>(bt); 
    MyConnectionManager<MyWifi> test2 = new MyConnectionManager<MyWifi>(wf); 

} 

}

0

更改MyConnectionManager如下:

public class MyConnectionManager<T extends Operation> implements Operation { 

    private T _op; 

    public MyConnectionManager(T op) { 
     // TODO Auto-generated constructor stub 
     _op = op; 
    } 

    public Boolean isConnected() { 
     // TODO Auto-generated method stub 
     return _op.isConnected(); 
    } 


    public Boolean connectionOpen() { 
     // TODO Auto-generated method stub 
     return _op.connectionOpen(); 
    } 


    public Boolean connectionClose() { 
     // TODO Auto-generated method stub 
     return _op.connectionClose(); 
    } 

    public T getOperation() { 
    return _op; 
    } 
}