【问题标题】:How to create generic and reusable code with java如何使用 java 创建通用且可重用的代码
【发布时间】:2015-03-02 17:28:45
【问题描述】:

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

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

这是我们想要达到的目标。

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

【问题讨论】:

    标签: java generics reusability


    【解决方案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);
    
    }
    

    }

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2018-05-17
        • 2019-02-27
        • 1970-01-01
        • 1970-01-01
        • 2013-03-22
        • 2015-11-23
        • 2016-09-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多