Я не программист Objective-C, просто сочувствующий, но возможно , NSSelectorFromString - то, в чем Вы нуждаетесь. Это упомянуло explicity в Ссылка Во время выполнения , что можно использовать его для преобразования строки в селектор.
Использование:
Set<MyGenericType> keySet = map.keySet();
Всегда пытайтесь указать тип интерфейса для коллекций, возвращаемых этими методами. Таким образом, независимо от фактического класса реализации Set, возвращаемого этими методами (в вашем случае map.keySet ()), все будет в порядке. Таким образом, если в следующем выпуске ребята из jdk будут использовать другую реализацию для возвращенного Set, ваш код все равно будет работать.
map.keySet () возвращает представление ключей карты. Внесение изменений в это представление приводит к изменению базовой карты, хотя эти изменения ограничены. См. Javadoc для карты:
http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#keySet%28%29
Map<String, String> someStrings = new HashMap<String, String>();
for(Map.Entry<String, String> entry : someStrings.entrySet()) {
String key = entry.getKey();
String value = entry.getValue();
}
Вот как мне нравится перебирать карты. Если вам нужен только keySet (), этот ответ находится в другом месте на этой странице.
for ( String key : map.keySet() ) {
System.out.println( key );
}
Все, что гарантировано keySet ()
, - это то, что реализует интерфейс Set
. И это может быть какой-то недокументированный класс, например SecretHashSetKeys $ foo
, поэтому просто запрограммируйте интерфейс Set
.
Я столкнулся с этим, пытаясь получить представление о TreeSet
, возвращаемый тип при внимательном рассмотрении оказался TreeSet $ 3
.
Если вы не используете более старый JDK, я думаю, что будет немного чище использовать дженерики при использовании классов коллекций.
Итак,
Set<MyType> s = map.keySet();
А затем, если вы просто перебираете их , то вы можете использовать любой цикл, какой захотите. Но если вы собираетесь изменять карту на основе этого набора ключей, вам необходимо использовать итератор набора ключей.
Set t = map.ketSet ()
API не указывает, какой тип Set возвращается.
Вы должны попытаться объявить переменные как интерфейс, а не конкретную реализацию .