[?]Компактный код при использовании Method(Java) - Visavi.net
https://visavi.net/
RSS - Visavi.nethttps://visavi.net/assets/img/images/logo_small.pngRSS - Visavi.net
https://visavi.net/
[email protected] (admin)[email protected] (admin)Wed, 27 Nov 2024 00:31:31 +030013. <strong>Башка</strong>, именно такой ответ я и ожидал здесь получить.<br>
Визави как обычно в своём духе, пустая трата времени))
https://visavi.net/topics/41387/671470
[?]Компактный код при использовании Method(Java) АнтонMon, 06 Oct 2014 13:57:17 +0400Сообщенияhttps://visavi.net/topics/41387/67147012. <strong>WmLiM</strong>, как хочешь. Мне то все равно.
https://visavi.net/topics/41387/671468
[?]Компактный код при использовании Method(Java) АртурMon, 06 Oct 2014 11:39:30 +0400Сообщенияhttps://visavi.net/topics/41387/67146811. <strong>Башка</strong>, не убедил, си не первый язык программирования на котором я что то писал )) <br>
К чему ты клонишь советуя прочитать статью? Мне интересно, возможно ли написать код более компактнее чем тот что я предоставил, мне нужно прочитать статью чтобы мне ответили на вопрос?
https://visavi.net/topics/41387/671461
[?]Компактный код при использовании Method(Java) АнтонMon, 06 Oct 2014 00:37:59 +0400Сообщенияhttps://visavi.net/topics/41387/67146110. <strong>WmLiM</strong>, на вот <a href="//visavi.net/blog/blog.php?act=view&id=429">http://visavi.net/blog/blog.php?act=view&id=429</a> прочитай про исключения для начала.
https://visavi.net/topics/41387/671457
[?]Компактный код при использовании Method(Java) АртурSun, 05 Oct 2014 21:04:55 +0400Сообщенияhttps://visavi.net/topics/41387/6714579. <strong>Башка</strong>, если я тебя правильно понял то throws нужен в том случае когда хочешь обработать определенное событие при каждом вызове.<br>
<br>
<em><span style="font-size:x-small">Добавлено через 02:26 сек.</span></em><br>
Да и смысл мне писать большой проект если у меня не хватит знаний его закончить. Я писал не большие библиотеки на сервер, но не более.
https://visavi.net/topics/41387/671435
[?]Компактный код при использовании Method(Java) АнтонSun, 05 Oct 2014 14:17:16 +0400Сообщенияhttps://visavi.net/topics/41387/671435Напишешь большой проект, поймешь зачем нужны throws в семантике методов. Пока делай как хочешь.
https://visavi.net/topics/41387/671431
[?]Компактный код при использовании Method(Java) АртурSun, 05 Oct 2014 13:09:22 +0400Сообщенияhttps://visavi.net/topics/41387/671431Вот такой не большой класс получился, только сильно не пинай Башка, я самоучка, мне не так важны термины как рабочий код. <br>
<pre class="prettyprint">
public class Methods {
private Object methodsObject;
private Class<?>[] parametersType;
public Methods(Object object, Class<?>... parametersType) {
this.methodsObject = object;
this.parametersType = parametersType;
}
public Object methodCall(String requiredMethod, Object... args) {
Object result = null;
try {
Method method = methodsObject.getClass().getMethod(requiredMethod,
parametersType);
result = method.invoke(methodsObject, args);
} catch (SecurityException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
return result;
}
}</pre>
<br>
Сейчас еще допишу под системные методы и сервисы напишу.<br>
По поводу класса, на мой взгляд это самый простой способ выполнить какой либо метод динамически.<br>
Пример использования метода<br>
<pre class="prettyprint">
TextView text = (TextView) this.findViewById(R.id.textView1);
TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
Methods methods = new Methods(tm);
text.setText((String) methods.methodCall("getSimCountryIso"));</pre>
https://visavi.net/topics/41387/671429
[?]Компактный код при использовании Method(Java) АнтонSun, 05 Oct 2014 11:41:53 +0400Сообщенияhttps://visavi.net/topics/41387/6714296. <strong>Башка</strong>, ну да, тебе легко сказать)) Я попробую сейчас универсальный класс сварганить, для вызова методов.
https://visavi.net/topics/41387/671428
[?]Компактный код при использовании Method(Java) АнтонSun, 05 Oct 2014 11:06:44 +0400Сообщенияhttps://visavi.net/topics/41387/6714285. <strong>WmLiM</strong>, не любая ошибка, а любая критическая ошибка, и не крах приложения, а выброс исключения по стеку вызовов. Это разные вещи. Напиши обработчик исключений на вершите стека вызовов и выноси throws в семантику методов. Это правильно и кошерно.
https://visavi.net/topics/41387/671427
[?]Компактный код при использовании Method(Java) АртурSun, 05 Oct 2014 10:37:40 +0400Сообщенияhttps://visavi.net/topics/41387/6714274. <strong>Башка</strong>, да это понятно что должно заполняться, просто раньше я мог их указать, а мог проигнорить, к примеру http менеджер, он не требует отлова ошибок, можно написать это, а можно проигнорить. Конечно при таком раскладе любая ошибка вызовет крах приложения, но я то знаю что код валидный и хотелось бы самому решать, когда нужны мне catch, а когда нет.
https://visavi.net/topics/41387/671423
[?]Компактный код при использовании Method(Java) АнтонSun, 05 Oct 2014 03:03:46 +0400Сообщенияhttps://visavi.net/topics/41387/6714233. <strong>WmLiM</strong>, и это нормально. catch не должен быть пустым. Либо ты обрабатываешь ошибку, либо выбрасываешь ее выше, о чем сообщаешь в семантике функции.
https://visavi.net/topics/41387/671415
[?]Компактный код при использовании Method(Java) АртурSat, 04 Oct 2014 17:03:23 +0400Сообщенияhttps://visavi.net/topics/41387/6714152. <strong>Башка</strong>, пробовал, после этого в месте вызова метода GetCountry приходится прописывать эти кэтчи, а это еще больше каша чем в исходном варианте.
https://visavi.net/topics/41387/671405
[?]Компактный код при использовании Method(Java) АнтонSat, 04 Oct 2014 12:07:16 +0400Сообщенияhttps://visavi.net/topics/41387/671405Переносить throws в семанитку метода не пробовал?
https://visavi.net/topics/41387/671404
[?]Компактный код при использовании Method(Java) АртурSat, 04 Oct 2014 11:43:23 +0400Сообщенияhttps://visavi.net/topics/41387/671404Всем привет! Думаю тут есть джава программисты, сам я пока что в терминах да и в коде не силен..<br>
У системного класса TelephonyManager есть метод getSimCountryIso(), так вот обычно инициализация менеджера и вызов метода занимает всего две строчки<br>
<pre class="prettyprint">
public String getCountry() {
TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
return tm.getSimCountryIso();
}</pre>
Но когда я пытаюсь вызвать метод динамически у меня получается очень большой код, в основном там одни кэтчи<br>
<pre class="prettyprint">
public String getCountry(Context context) {
TelephonyManager tm = (TelephonyManager) context
.getSystemService(Context.TELEPHONY_SERVICE);
String country = "";
try {
Method getSimCountryIso = tm.getClass().getMethod("getSimCountryIso");
country = (String) getSimCountryIso.invoke(context);
} catch (SecurityException e) {
} catch (NoSuchMethodException e) {
} catch (IllegalArgumentException e) {
} catch (IllegalAccessException e) {
} catch (InvocationTargetException e) {
}
return country;
}
</pre>
Вот такое чудо, собственно не гламурно не кошерно выглядит такой код, а без кэтчей приложение попросту не запускается.<br>
Есть решение как использовать динамический вызов метода избегая такой каши в коде?
https://visavi.net/topics/41387/671401
[?]Компактный код при использовании Method(Java) АнтонSat, 04 Oct 2014 08:09:16 +0400Сообщенияhttps://visavi.net/topics/41387/671401