Я новичок в Java, и я рассказал о своем вопросе в Сети, но не вполне удовлетворен. Я хочу знать, что такое «класс полезности» в Java?Классы полезности в программировании на Java
Может кто-нибудь, пожалуйста, скажите мне пример.
Спасибо, Дэвид
Я новичок в Java, и я рассказал о своем вопросе в Сети, но не вполне удовлетворен. Я хочу знать, что такое «класс полезности» в Java?Классы полезности в программировании на Java
Может кто-нибудь, пожалуйста, скажите мне пример.
Спасибо, Дэвид
Это, как правило, класс, который имеет только статические методы (возможно, с частным конструктором и отмечено абстрактными/окончательными для предотвращения создания экземпляра/подклассами). Он существует только для того, чтобы упростить использование других классов - например, предоставляя кучу статических методов для работы с значениями String
, выполняя дополнительные действия, которые String
сам не поддерживает.
Классы полезности обычно не работают над классами, которыми вы управляете, поскольку в противном случае вы обычно вводите поведение непосредственно в этот класс. Они не ужасно опрятные в терминах ОО, но все равно могут быть полезными.
Там есть утилита пакет, java.util, который содержит кучу вещей, как дата, время, струнные tokenizers ... Не уверен, что это то, что вы говорите.
Для продления ответа Йона Скита java.lang.Math
, java.util.Collections
и java.util.Arrays
являются типичными примерами для таких классов.
Его класс со всеми статическими методами и без элементов-членов.
общественного класса Utils {
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;
}
}
добавить некоторое объяснение – HaveNoDisplayName
Обычно отмеченные 'final' в отличие от' abstract' –
@ JT-gilkeson: Абстрактный имеет то преимущество, что новый XYZ (...) будет * очевидно * не работает. –
Абстракция _obviosuly_ указывает, что класс должен быть расширен - использование этого ключевого слова вводит в заблуждение, поэтому подход, используемый Sun, Oracle и Google, заключается в том, чтобы не маркировать абстрактные классы. Обычный подход - это 'final' класс с конструктором' private'. В качестве примера см. «Java.lang.Math». –