Исправление пакетов и ссылок NuGet раз и навсегда

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

  1. Ни один здравомыслящий программист не использует необработанные типы в новом коде. Таким образом, компилятор мог просто предположить, что, не создавая аргументов типа, вы хотите, чтобы он их выводил.
  2. Оператор алмаза не предоставляет информацию о типе, он просто говорит компилятор, «все будет хорошо». Поэтому, опуская его, вы не можете навредить.

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

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

package 7 com.example;

, можно было бы ясно (вы можете предпочесть что-то более сложное, включая один или несколько причудливых ключевых слов). Это даже позволило бы скомпилировать источники, написанные для разных версий Java, без проблем. Это позволит вводить новые ключевые слова (например, «модуль») или отбрасывать некоторые устаревшие функции (несколько непубличных не вложенных классов в один файл или вообще) без потери совместимости.

21
задан Esther Fan - MSFT 19 June 2016 в 05:39
поделиться