|  1.04.2015 / 06:15 |  | 
| garfild63    Пользователь 
  Сейчас: Offline 
 Имя: АнтонОткуда: Новороссийск
 Регистрация: 26.08.2014
 
 | А java-компилятор онлайн?   | 
|  1.04.2015 / 14:19 |  | 
| ВитаминКО    Супермодератор 
  Сейчас: Offline 
 Имя: ВасилиусОткуда: RZN
 Регистрация: 20.04.2012
 
 | Цитата garfild63:__________________А java-компилятор онлайн?
  вымерли 
   わからない!! | 
|  2.04.2015 / 11:13 |  | 
| aNNiMON   Супервизор 
  Сейчас: Offline 
 Имя: ВитёкРегистрация: 11.01.2010
 
 | __________________Интересно, заметил, что метод private static void method(Type... types) { }
имеет флаг varargs , что логично - надо же отличать T... от T[]. Но кроме того, существуют ещё флаги synthetic  и bridge . И если с первым всё понятно, то второй я так нигде и не увидел. Гугление вывело на статью http://www.informit.com/articles/article.aspx?p=2025637&seqNum=8  про Type Erasure. И там встретился пример: Открыть спойлер Закрыть спойлер public class Node<T> {    private T data;    public Node(T data) { this.data = data; }     public void setData(T data) {        System.out.println("Node.setData");        this.data = data;    }}
public class MyNode extends Node<Integer> {     public MyNode(Integer data) { super(data); }     @Override    public void setData(Integer data) {        System.out.println(data);        super.setData(data);    }}
После компиляции, информация о generics стирается. Было|  1 из 2  | Сравнение Node | 
 Сталоpublic class Node<T> {    private T data;    public Node(T data) { this.data = data; }     public void setData(T data) {        System.out.println("Node.setData");        this.data = data;    }}
 public class Node {    private Object data;    public Node(Object data) { this.data = data; }     public void setData(Object data) {        System.out.println("Node.setData");        this.data = data;    }}
Было|  1 из 2  | Сравнение MyNode | 
 Сталоpublic class MyNode extends Node<Integer> {     public MyNode(Integer data) { super(data); }     @Override    public void setData(Integer data) {        System.out.println(data);        super.setData(data);    }}
 public class MyNode extends Node {     public MyNode(Integer data) { super(data); }     public void setData(Integer data) {        System.out.println(data);        super.setData(data);    }     public {bridge synthetic} void setData(Object obj) {        setData((Integer)obj);    }}
В классе MyNode появился ещё один метод, называемый bridge method , который имеет модификаторы bridge synthetic:javap -v MyNode.class public void setData(java.lang.Integer);  descriptor: (Ljava/lang/Integer;)V  flags: ACC_PUBLIC public void setData(java.lang.Object);  descriptor: (Ljava/lang/Object;)V  flags: ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
   let liveИзменено aNNiMON (2.04 / 11:15) (всего 1 раз)
 | 
|  2.04.2015 / 13:11 |  | 
| Oak    Пользователь 
  Сейчас: Offline 
 Имя: КоляОткуда: Москва
 Регистрация: 02.06.2010
 
 | aNNiMON, интересно, только пример, по-моему, не разъясняет «зачем».__________________
 
   Эль Презеденте | 
|  2.04.2015 / 14:37 |  | 
| aNNiMON   Супервизор 
  Сейчас: Offline 
 Имя: ВитёкРегистрация: 11.01.2010
 
 | Oak,  я и сам бы хотел это знать. Думаю, bridge method появляется как следствие Type Erasure, чтобы соответствовать сигнатуре наследуемого класса (node.setData(Object) - mynode.setData(Object)), а флаг Bridge, видимо, значит что-то для JVM. __________________Но вообще этот пост был написан с целью обратить внимания на флаги.
 
 
   let liveИзменено aNNiMON (2.04 / 14:40) (всего 2 раза)
 | 
|  2.04.2015 / 15:35 |  | 
| Oak    Пользователь 
  Сейчас: Offline 
 Имя: КоляОткуда: Москва
 Регистрация: 02.06.2010
 
 | __________________aNNiMON, а, понял зачем    Чтобы если к объекту обратиться как к Node, то вызвался перегруженный метод из реализации.
   Эль Презеденте | 
|  2.04.2015 / 15:38 |  | 
| garfild63    Пользователь 
  Сейчас: Offline 
 Имя: АнтонОткуда: Новороссийск
 Регистрация: 26.08.2014
 
 | aNNiMON,  Как в первом компиляторе добавить поля для сорц-файлов, а то их там очень мало, всего 5?   | 
|  2.04.2015 / 18:36 |  | 
| ВитаминКО    Супермодератор 
  Сейчас: Offline 
 Имя: ВасилиусОткуда: RZN
 Регистрация: 20.04.2012
 
 | garfild63, ты же нетбинс собирался ставить, зачем онлайн компилятор__________________
 
   わからない!! | 
|  2.04.2015 / 20:13 |  | 
| garfild63    Пользователь 
  Сейчас: Offline 
 Имя: АнтонОткуда: Новороссийск
 Регистрация: 26.08.2014
 
 | ВитаминКО,  Я это на всякий случай. Вдруг нетбинс не получится установить.
 |