Вопрос: Планируется ли выход в будущую версию Java? [закрыто]


Уступать  является одной из лучших функций C #, которые я пропускаю при программировании на Java. Любой шанс, что он будет включен в Java 7 или 8?

Я знаю, что были попытки подражать этой функциональности, что я спрашиваю конкретно, это включение урока в качестве ключевого слова первого класса в официальную сборку java.


6


источник


Ответы:


Я не вижу никаких планов. Определенно не запланировано для Java 7 или 8.

И если вы говорите конкретно о добавлении нового ключевого слова к языку, вероятность того, что это происходит, в основном 0. Да, это произошло раньше (с утверждением и т. П.), Но должна быть довольно чертовски убедительная причина для добавить один! Я сомневаюсь, что такое предложение будет подпадать под эту категорию.

Однако, честно говоря, я бы не стал включать его в Java в первую очередь. У нас уже есть интерфейс итератора, и это достаточно просто / достаточно хорошо, чтобы использовать его без необходимости отдельной функциональности.

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


-2



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

В приведенном примере было бы более целесообразно встроить метод Power, подобный этому.

static void Main(String... args) {
    // Display powers of 2 up to the exponent 8:
    for(int i = 1; i <= (1 << 8); i *= 2)
        System.out.println(i);
}

Как вы можете видеть, это намного короче, хотя, возможно, не так ясно, как то, что он делает.

BTW: 1 - 2 ^ 0 и мощность 2.

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

public static Iterable<Integer> power(int base, int exponent) {
    List<Integer> ints = new ArrayList<Integer>();
    for (int i = 1; exponent-- >= 0; i *= base) ints.add(i);
    return ints;
}

public static void main(String... args) {
    for (int i : power(2, 8)) System.out.print(i + " ");
}

Печать

1 2 4 8 16 32 64 128 256 

1



В соответствии с недавно выпущенными планами для Java 7 и Java 8 ответ отрицательный. Еще есть время добавить его в Java 8, но я сомневаюсь, что кто-то работает над этой функцией. А в Java 9 или новее ... кто знает.

Если у вас есть часть проекта, где вы можете воспользоваться такой функцией, вы можете попробовать альтернативные языки JVM, такие как Scala для этой части проекта. Я считаю, что некоторые из них включают подобные функции.


0