Вставьте слепки типа, если необходимо, чтобы сохранить безопасность типа - PullRequest
0 голосов
/ 10 марта 2019

Как официальный урок о типах стираемых типов , и это утверждение меня так смущает.Когда может произойти точная вставка типа ?Я попытался с помощью простого использования обобщений и использования javap -c a.class для проверки байт-кода, но, кажется, вставка типов не вставлена, как я ожидал.

Так называемый дубликат - это больше о методе моста , использующем приведение типов для обеспечения правильности polymorphism, в то время как мне интересно, что именно означает второе утверждение.

Вставьте приведение типов в случае необходимости, чтобы сохранить безопасность типов .

Можно ли привести какой-либо пример, чтобы продемонстрировать это?

1 Ответ

1 голос
/ 10 марта 2019

В конце концов, я думаю Ответ Джона Скита прояснил путаницу.

при использовании генериков они преобразуются в проверки во время компиляции и приводят во время выполнения .

Когда мы попытаемся скомпилировать a.java и декомпилировать a.class, мы увидим магию (компилятор помогает автоматически вставлять приведение типов).

    List<String> list = new ArrayList<>();
    list.add("hell");
    out.println(list.get(0));

После декомпиляции:

    ArrayList var3 = new ArrayList();
    var3.add("hell");
    System.out.println((String)var3.get(0));

Использование устаревшего кода в универсальном коде из официального универсального учебника:

... всякий раз, когда полученный код не является корректным по типу, вставляется приведение к соответствующему типу ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...