【问题标题】:Utility Classes in Java ProgrammingJava 编程中的实用程序类
【发布时间】:2010-10-13 06:53:38
【问题描述】:

我是 Java 新手,我在网上提到了我的问题,但不太满意。我想知道Java中的“Utility Class”是什么?

谁能告诉我一个例子。

谢谢, 大卫

【问题讨论】:

    标签: java android class utility


    【解决方案1】:

    它通常是一个只有静态方法的类(可能带有私有构造函数并标记为 abstract/final 以防止实例化/子类化)。它的存在只是为了让其他类更易于使用 - 例如,提供一堆静态方法来处理 String 值,执行 String 本身不支持的额外操作。

    实用程序类通常不会对您可以控制的类进行操作,否则您通常会将行为直接放在该类中。它们在 OO 方面不是非常整洁,但仍然非常有用。

    【讨论】:

    • @jt-gilkeson:Abstract 的优点是 new XYZ(...) 显然不起作用。
    • Abstract obviosuly 表示该类旨在扩展 - 使用此关键字会产生误导,这就是 Sun、Oracle 和 Google 使用的方法不标记类抽象。正常的方法是 final 类和 private 构造函数。以java.lang.Math 为例。
    • @jt-gilkeson:我个人都很好。我已经编辑了我的答案,将 final 作为一个选项。可惜 Java 没有 C# 的静态类……
    【解决方案2】:

    为了扩展 Jon Skeet 的回答,java.lang.Mathjava.util.Collectionsjava.util.Arrays 是此类课程的典型示例。

    【讨论】:

      【解决方案3】:

      有一个实用程序java.util,其中包含一堆东西,如日期、时间、字符串标记器……不确定你说的是不是这个。

      【讨论】:

        【解决方案4】:

        它是一个包含所有静态方法且没有成员元素的类。

        【讨论】:

          【解决方案5】:

          公共类实用程序{

          public static boolean isNetworkAvailable(Context context) {
              ConnectivityManager connectivityManager = (ConnectivityManager) context
                      .getSystemService(Context.CONNECTIVITY_SERVICE);
              NetworkInfo activeNetworkInfo = connectivityManager
                      .getActiveNetworkInfo();
              return activeNetworkInfo != null && activeNetworkInfo.isConnected();
          }
          
          public static void unlockScreenOrientation(Activity activity) {
              activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
          }
          
          public static void lockScreenOrientation(Activity activity) {
              int currentOrientation = activity.getResources().getConfiguration().orientation;
              if (currentOrientation == Configuration.ORIENTATION_PORTRAIT)
              {
                  activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
              }
              else
              {
                  activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
              }
          }
          // Get Http Post response
          @Nullable
          public static String getHttpResponse(String url, List<NameValuePair> nameValuePairs) {
              HttpClient httpClient = new DefaultHttpClient();
          
              HttpPost httpPost = new HttpPost(url);
              UrlEncodedFormEntity entity;
              try {
                  entity = new UrlEncodedFormEntity(nameValuePairs);
                  httpPost.setEntity(entity);
                  HttpResponse response = httpClient.execute(httpPost);
          
                  HttpEntity resEntity = response.getEntity();
                  String res =  EntityUtils.toString(resEntity);
                  return res;
              } catch (UnsupportedEncodingException e) {
                  e.printStackTrace();
              } catch (ClientProtocolException e) {
                  e.printStackTrace();
              } catch (IOException e) {
                  e.printStackTrace();
              }
              return null;
          }
          
          public static void CopyStream(InputStream is, OutputStream os) {
              final int buffer_size=1024;
              try
              {
                  byte[] bytes=new byte[buffer_size];
                  for(;;)
                  {
                      int count=is.read(bytes, 0, buffer_size);
                      if(count==-1)
                          break;
                      os.write(bytes, 0, count);
                  }
              }
              catch(Exception ex){}
          }
          
          public static JSONObject getJsonObjectFromXmlResponse(String xmlString) {
              JSONObject objectJson = new JSONObject();
              //JSONArray arrayJson = new JSONArray();
          
              XmlPullParser parser = Xml.newPullParser();
              try {
                  parser.setInput(new StringReader(xmlString));
                  int eventType = parser.getEventType();
          
                  while (eventType != XmlPullParser.END_DOCUMENT) {
                      String name;
                      switch (eventType) {
                          case XmlPullParser.START_TAG:
                              name = parser.getName();
                              if (name.equalsIgnoreCase("string")) {
                                  String yourValue = parser.nextText();
                                  //arrayJson = new JSONArray(yourValue);
                                  objectJson = new JSONObject(yourValue);
                              }
                              break;
                      }
                      eventType = parser.next();
                  }
              } catch (XmlPullParserException e) {
                  e.printStackTrace();
              } catch (IOException e) {
                  e.printStackTrace();
              } catch (JSONException e) {
                  e.printStackTrace();
              }
              return objectJson;
          }
          

          }

          【讨论】:

          • 添加一些解释
          猜你喜欢
          • 1970-01-01
          • 2011-04-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多