如何使用 java 创建通用且可重用的代码

How to create generic and reusable code with java

我在 java 上新。 我想做的是尝试创建可重用的通用 class。 这是我的代码。

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

我的主要class

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;
    }

但我希望它是通用的和可重用的,因为类型应该是可变的。例如,它可以是 MyBlueTooth(实现相同的接口)而不是 MyWifi 等等。

这是要实现的目标。

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

你的意思是这样的?

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);

}

}

如下更改您的 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;
    }
}