Как запустить vagrant в Windows, которая работает в VMWare Fusion?

Общий ответ:

Помимо проблемы одной и той же реализации здесь основная проблема заключается в том, что несколько варварский «метод A и метод B имеют одно и то же стирание».

Что делает этот вопрос сложным, так это то, что мы, как правило, не знаем (по крайней мере, не этим утром) много знаем о «тире стирания».

Чтобы сделать это коротко:

Параметрические типы выполняют проверку типа во время компиляции (для обеспечения правильности ввода), но забудьте о своих параметрах типа во время выполнения (чтобы избежать генерации базовых методов).

blockquote>

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

  1. Что такое повторно идентифицируемый тип?
  2. Как и под каким
  3. Есть ли у вас какие-либо идеи / примеры того, что это может означать в моей жизни кодирования?
  4. Well это странно, и мне это не очень нравится, но мне любопытно, почему они это сделали ...

Надеюсь, что это поможет вам, насколько это мне помогло.

Конкретный ответ:

В вашем случае

public abstract class ClassA {
    public static List createSensors(Collection list) {
        //do stuff
    }
}

public abstract class ClassB extends ClassA {
    public static List createSensors(Collection list) {
        //do other stuff
   }
}

будет «преобразован» с помощью javac на

public abstract class ClassA {
    public static List createSensors(Collection list) {
        //do stuff
    }
}

public abstract class ClassB extends ClassA {
    public static List createSensors(Collection list) {
        //do other stuff
   }
}

, где один явно не может переопределить другой (не такой же параметр типа), но в то же время в точности совпадают во время выполнения (нет возможности для вашей программы выбрать, какой из них использовать).

Хватит этой проблемы, как решить его? Вы можете перейти к одному из следующих способов:

  • Использовать разные имена: createASensors и createBSensors этот подход является наиболее очевидным, но выглядит немного менее изящным.
  • Добавить параметр: createSensors(Collection list, ClassA typeDefiner) этот подход может показаться варварским, но немного менее изящным, но используется в java.util.List для метода T[] toArray(T[] a).

0
задан Matt W 24 February 2015 в 17:06
поделиться