Установите Java 7 SDK на свой компьютер
Установите Eclipse Indigo 3.7.1
Вы должны искать правильные пакеты для вашей операционной системы.
В вашем рабочем пространстве Eclipse вам нужно определить установленный Java 7 JDK в вашей среде выполнения. В Workbench перейдите в «Окно»> «Установки»> «Java»> «Установленные JRE» и добавьте домашний каталог Java 7.
Далее вам нужно установить уровень компилятора на 1.7 в Java> Compiler.
Улучшенные литералы
Литерал — это представление исходного кода фиксированного значения.
«В Java SE 7 и более поздних версиях любое число символов подчеркивания (_) может появляться в любом месте между цифрами в числовом литерале. Эта функция позволяет вам разделять группы цифр в числовых литералах, что может улучшить читаемость вашего кода ». (из учебников по Java )
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
|
public class LiteralsExample { public static void main(String[] args) { System.out.println( "With underscores: " ); long creditCardNumber = 1234_5678_9012_3456L; long bytes = 0b11010010_01101001_10010100_10010010; System.out.println(creditCardNumber); System.out.println(bytes); System.out.println( "Without underscores: " ); creditCardNumber = 1234567890123456L; bytes = 0b11010010011010011001010010010010; System.out.println(creditCardNumber); System.out.println(bytes); } } |
Обратите внимание на подчеркивания в литералах (например, 1234_5678_9012_3456L). Результаты записываются в консоль:
1
2
3
4
5
6
|
With underscores: 1234567890123456 - 764832622 Without underscores: 1234567890123456 - 764832622 |
Как видите, подчеркивания не имеют значения для значений. Они просто используются, чтобы сделать код более читабельным.
SafeVarargs
До JDK 7 вы всегда получали непроверенное предупреждение при вызове определенных методов библиотеки varargs. Без новой аннотации @SafeVarargs
этот пример будет создавать непроверенные предупреждения.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
|
public class SafeVarargsExample { @SafeVarargs static void m(List<string>... stringLists) { Object[] array = stringLists; List<integer> tmpList = Arrays.asList( 42 ); array[ 0 ] = tmpList; // compiles without warnings String s = stringLists[ 0 ].get( 0 ); // ClassCastException at runtime } public static void main(String[] args) { m( new ArrayList<string>()); } }</string></integer></string> |
Новая аннотация в строке 3 не помогает обойти раздражающую ClassCastException
во время выполнения. Также его можно применять только к статическим и конечным методам. Поэтому я считаю, что это не будет большой помощью. Будущие версии Java будут иметь ошибки времени компиляции для небезопасного кода, как в примере выше.
ромб
В Java 6 требовалось некоторое терпение, чтобы создать, скажем, список карт. Посмотрите на этот пример:
1
2
3
4
5
6
7
8
9
|
public class DiamondJava6Example { public static void main(String[] args) { List<Map<Date, String>> listOfMaps = new ArrayList<Map<Date, String>>(); // type information twice! HashMap<Date, String> aMap = new HashMap<Date, String>(); // type information twice aMap.put( new Date(), "Hello" ); listOfMaps.add(aMap); System.out.println(listOfMaps); } } |
Как вы можете видеть в правой части назначения в строках 3 и 4, вам нужно повторить информацию о вашем типе для переменной listOfMaps
а также для переменной aMap
. Это больше не нужно в Java 7:
1
2
3
4
5
6
7
8
9
|
public class DiamondJava7Example { public static void main(String[] args) { List<Map<Date, String>> listOfMaps = new ArrayList<>(); // type information once! HashMap<Date, String> aMap = new HashMap<>(); // type information once! aMap.put( new Date(), "Hello" ); listOfMaps.add(aMap); System.out.println(listOfMaps); } } |
Multicatch
В Java 7 вам не нужно условие catch для каждого отдельного исключения, вы можете перехватить несколько исключений в одном предложении. Вы помните код, как это:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
|
public class HandleExceptionsJava6Example { public static void main(String[] args) { Class string; try { string = Class.forName( "java.lang.String" ); string.getMethod( "length" ).invoke( "test" ); } catch (ClassNotFoundException e) { // do something } catch (IllegalAccessException e) { // do the same !! } catch (IllegalArgumentException e) { // do the same !! } catch (InvocationTargetException e) { // yeah, well, again: do the same! } catch (NoSuchMethodException e) { // ... } catch (SecurityException e) { // ... } } } |
Начиная с Java 7 вы можете написать это так, что делает нашу жизнь намного проще:
01
02
03
04
05
06
07
08
09
10
|
public class HandleExceptionsJava7ExampleMultiCatch { public static void main(String[] args) { try { Class string = Class.forName( "java.lang.String" ); string.getMethod( "length" ).invoke( "test" ); } catch (ClassNotFoundException | IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException e) { // do something, and only write it once!!! } } } |
Строка в выражениях switch
Начиная с Java 7 можно использовать строковые переменные в предложениях switch. Вот пример:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
|
public class StringInSwitch { public void printMonth(String month) { switch (month) { case "April" : case "June" : case "September" : case "November" : case "January" : case "March" : case "May" : case "July" : case "August" : case "December" : default : System.out.println( "done!" ); } } } |
Попробуйте-с-ресурса
Эта функция действительно помогает сократить непредвиденные исключения во время выполнения. В Java 7 вы можете использовать так называемое предложение try-with-resource, которое автоматически закрывает все открытые ресурсы в случае возникновения исключения. Посмотрите на пример:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; public class TryWithResourceExample { public static void main(String[] args) throws FileNotFoundException { // Java 7 try-with-resource String file1 = "TryWithResourceFile.out" ; try (OutputStream out = new FileOutputStream(file1)) { out.write( "Some silly file content ..." .getBytes()); ":-p" .charAt( 3 ); } catch (StringIndexOutOfBoundsException | IOException e) { System.out.println( "Exception on operating file " + file1 + ": " + e.getMessage()); } // Java 6 style String file2 = "WithoutTryWithResource.out" ; OutputStream out = new FileOutputStream(file2); try { out.write( "Some silly file content ..." .getBytes()); ":-p" .charAt( 3 ); } catch (StringIndexOutOfBoundsException | IOException e) { System.out.println( "Exception on operating file " + file2 + ": " + e.getMessage()); } // Let's try to operate on the resources File f1 = new File(file1); if (f1.delete()) System.out.println( "Successfully deleted: " + file1); else System.out.println( "Problems deleting: " + file1); File f2 = new File(file2); if (f2.delete()) System.out.println( "Successfully deleted: " + file2); else System.out.println( "Problems deleting: " + file2); } } |
В строке 14 предложение try-with-resource используется для открытия файла, с которым мы хотим работать. Затем строка 16 генерирует исключение времени выполнения. Обратите внимание, что я не закрываю ресурс явным образом. Это делается автоматически при использовании try-with-resource. Это * не *, когда вы используете эквивалент Java 6, показанный в строках 21-30.
Код запишет в консоль следующий результат:
1
2
3
4
|
Exception on operating file TryWithResourceFile.out: String index out of range: 3 Exception on operating file WithoutTryWithResource.out: String index out of range: 3 Successfully deleted: TryWithResourceFile.out Problems deleting: WithoutTryWithResource.out |
Вот и все с точки зрения Project Coin. Очень полезные вещи в моих глазах.
Ссылка: «Java 7: Project Coin в примерах кода» от нашего партнера JCG Никласа.
Статьи по Теме :