На основе той же идеи как Супер Маркеры Типа Вы могли создать введенный идентификатор для использования вместо строки:
public abstract class TypedID<T extends Animal> {
public final Type type;
public final String id;
protected TypedID(String id) {
this.id = id;
Type superclass = getClass().getGenericSuperclass();
if (superclass instanceof Class) {
throw new RuntimeException("Missing type parameter.");
}
this.type = ((ParameterizedType) superclass).getActualTypeArguments()[0];
}
}
, Но я думаю, что это может победить цель, так как теперь необходимо создать новые идентификационные объекты для каждой строки и держаться за них (или восстановить их с корректной информацией о типе).
Mouse jerry = new Mouse();
TypedID<Dog> spike = new TypedID<Dog>("spike") {};
TypedID<Duck> quacker = new TypedID<Duck>("quacker") {};
jerry.addFriend(spike, new Dog());
jerry.addFriend(quacker, new Duck());
, Но можно теперь использовать класс в способе, которым Вы первоначально хотели без бросков.
jerry.callFriend(spike).bark();
jerry.callFriend(quacker).quack();
Это просто скрывает параметр типа в идентификаторе, хотя это действительно означает, что можно получить тип от идентификатора позже, если Вы желаете.
необходимо было бы реализовать сравнение и методы хеширования TypedID также, если Вы хотите быть в состоянии сравнить два идентичных экземпляра идентификатора.
Характеристики устройства Nokia, включая поддерживаемые JSR: http://www.forum.nokia.com/devices/
Вы также можете посмотреть результаты тестов, так как они иногда дают хорошее представление о том, что поддерживается на данном телефоне:
Один довольно большой текущий проблема заключается в том, поддерживают ли телефоны, на которые вы хотите ориентироваться, MIDP 2.1 (легко проверить с помощью приложения helloworld 2.1), как недавние телефоны Sony-Ericsson и Nokia.
Эта версия связана с архитектурой мобильных сервисов (JSR-248), усовершенствование технологии Java для беспроводной индустрии (JSR-185), которая определяет API-интерфейсы, которые должен поддерживать телефон.
WURFL содержит информацию о телефонах Поддержка J2ME, хотя в настоящее время она охватывает только MIDP 1.0 и 2.0. На http://wurflpro.com/
Я думаю, что в настоящее время почти все телефоны поставляются как минимум с MIDP 2.0, по крайней мере, в США. Я почти уверен, что так обстоит дело со многими телефонами. Однако один из способов узнать наверняка - это зайти на сайт оператора беспроводной связи, получить список телефонов и проверить информацию MIDP на сайте производителя. Вот что я бы сделал.
Еще одним хорошим ресурсом является база данных результатов теста FPC: http://www.dpsoftware.org/filter.php .
На сайте представлено приложение для тестирования производительности JavaME, которое проверяет различные функции и API ( JSR). База данных результатов содержит результаты этих тестов бесплатно для широкого спектра устройств. Если ваше устройство отсутствует, вы можете загрузить тестовое приложение, запустить его на своем телефоне и загрузить результаты.
Еще одна хорошая база данных устройств - deviceatlas.com
Насколько мне известно, нет доступных или объявленных устройств Nokia, поддерживающих MIDP 3.0. Похоже, что спецификация еще не получила окончательного утверждения:
http://jcp.org/en/jsr/detail?id=271
Для получения информации об устройствах Nokia я использую ссылку, предоставленную laalto . В нем также есть поиск для фильтрации устройств на основе определенной функции, такой как поддерживаемые API Java.
По поводу добавленного вами вопроса о классификации: Java ME - это зонтик, охватывающий множество различных мобильных технологий Java. Спецификации Java ME, наиболее подходящие для мобильных телефонов, - это CLDC и MIDP. MIDP - это тот, который содержит большинство API-интерфейсов, видимых разработчику, поэтому его часто называют платформой, как вы предложили.
Однако «Java ME SDK 3.0» Вы упомянули конкретный продукт Sun, содержащий инструменты для разработки для MIDP, а также для некоторых других платформ Java ME. Несмотря на номер версии SDK, содержащиеся в нем инструменты MIDP НЕ поддерживают MIDP 3.0. Я не знаю, есть ли какие-либо инструменты для разработки для MIDP 3.0, возможно, у кого-то еще есть дополнительная информация об этом?