Как правильно приводить универсальные коллекции в Java? - PullRequest
0 голосов
/ 10 июля 2019

Допустим, я первоначально объявил и определил набор целых чисел следующим образом:

Set<Integer> s = new TreeSet<>();

Теперь, позже я хочу использовать методы, специфичные для TreeSet.И представьте, что мне нужно это много раз в моем проекте.Какой из следующих способов лучше придерживаться?

1- Запись этого перед началом использования s, в начале моего метода

s = (TreeSet) s;

2- Запись с типомвключены (опять же в начале моего метода)

s = (TreeSet<Integer>) s;

3 - Приведение из Set в TreeSet только в тех случаях, когда мне нужен доступ к специфическому для TreeSet методу

Integer x = ((TreeSet)s).first();

1 Ответ

0 голосов
/ 10 июля 2019

Как уже говорили другие, вам не нужно терять контекст Set, являющегося TreeSet после вашего объявления, если это важно.

A TreeSet is-a Set, поэтому вы должны иметь возможность передавать его как Set.

Например:

Set<Integer> getSetButDoSomethingSpecial() {
  TreeSet<Integer> treeSet = new TreeSet<>();
  //Do something specific to treeSet
  return treeSet;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...