[?]Компактный код при использовании Method(Java) - Visavi.net https://visavi.net/ RSS - Visavi.net https://visavi.net/assets/img/images/logo_small.png RSS - Visavi.net https://visavi.net/ [email protected] (admin) [email protected] (admin) Wed, 08 May 2024 04:03:25 +0300 13. <strong>Башка</strong>, именно такой ответ я и ожидал здесь получить.<br> Визави как обычно в своём духе, пустая трата времени)) https://visavi.net/topics/41387/671470 [?]Компактный код при использовании Method(Java) Антон Mon, 06 Oct 2014 13:57:17 +0400 Сообщения https://visavi.net/topics/41387/671470 12. <strong>WmLiM</strong>, как хочешь. Мне то все равно. https://visavi.net/topics/41387/671468 [?]Компактный код при использовании Method(Java) Артур Mon, 06 Oct 2014 11:39:30 +0400 Сообщения https://visavi.net/topics/41387/671468 11. <strong>Башка</strong>, не убедил, си не первый язык программирования на котором я что то писал )) <br> К чему ты клонишь советуя прочитать статью? Мне интересно, возможно ли написать код более компактнее чем тот что я предоставил, мне нужно прочитать статью чтобы мне ответили на вопрос? https://visavi.net/topics/41387/671461 [?]Компактный код при использовании Method(Java) Антон Mon, 06 Oct 2014 00:37:59 +0400 Сообщения https://visavi.net/topics/41387/671461 10. <strong>WmLiM</strong>, на вот <a href="//visavi.net/blog/blog.php?act=view&amp;id=429">http://visavi.net/blog/blog.php?act=view&amp;id=429</a> прочитай про исключения для начала. https://visavi.net/topics/41387/671457 [?]Компактный код при использовании Method(Java) Артур Sun, 05 Oct 2014 21:04:55 +0400 Сообщения https://visavi.net/topics/41387/671457 9. <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&lt;?&gt;&#91;] parametersType; public Methods(Object object, Class&lt;?&gt;... 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(&quot;getSimCountryIso&quot;));</pre> https://visavi.net/topics/41387/671429 [?]Компактный код при использовании Method(Java) Антон Sun, 05 Oct 2014 11:41:53 +0400 Сообщения https://visavi.net/topics/41387/671429 6. <strong>Башка</strong>, ну да, тебе легко сказать)) Я попробую сейчас универсальный класс сварганить, для вызова методов. https://visavi.net/topics/41387/671428 [?]Компактный код при использовании Method(Java) Антон Sun, 05 Oct 2014 11:06:44 +0400 Сообщения https://visavi.net/topics/41387/671428 5. <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/671427 4. <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/671423 3. <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/671415 2. <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 = &quot;&quot;; try { Method getSimCountryIso = tm.getClass().getMethod(&quot;getSimCountryIso&quot;); 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