1. Переключатель поддерживает строку как параметры
/*** * Переключатель поддерживает параметры строк jdk7 * @author huangjiawei */public class switchtest {public static void switchtest (string arg) {switch (arg) {case "lisa": System.err.println ("I Am Lisa!"); перерыв; Case "Mike": System.err.println ("Я - Майк!"); перерыв; по умолчанию: System.err.println («Я твой единственный!»); перерыв; }} public static void main (string [] args) {switchTest ("lisa"); // I Am Lisa! SwitchTest ("Mike"); // Я Майк! SwitchTest (""); // Я единственный! }}Поддержка переключения переключения
/** * Переключение перечисления поддерживает jdk5 * @author huangjiawei * */public class switchmonthtest {public static void swithmonthtest (месяц месяц) {Switch (месяц) {case январь: System.err.println («Это январь»); перерыв; Дело в феврале: System.err.println («Это февраль»); перерыв; Case March: System.err.println («Это март»); перерыв; }} public static void main (string [] args) {swithmonthtest (month.january); // Это январь swithmonthtest (month.february); // Это февраль Swithmonthest (month.march); // Это март}}}}}}}}}}}2. Улучшение числовых литералов
2.1. Перед Java7 он поддерживает десятичные значения (1234), октальный (01234) и шестнадцатеричный (0x1234)
Java 8 поддерживает бинар (0B11110001)
2.2. Может быть разделен подчеркиванием_
Public Class BinaryTest {Private Static int a = 16; // Десятичный частный статический статический int b = 020; // Октальный частный статический статический int c = 0x10; // шестнадцатеричный частный статический статический int d = 0b0001_0000; // Двуичный, используйте делимитеры, чтобы разделить главный статический void (string [] args) {System.err.println; System.err.println (b); // 16 System.err.println (c); // 16 System.err.println (d); // 16}}3. Ресурсы автоматически закрыты
В Java есть много ресурсов, которые необходимо закрыть после их использования. Возьмите каштан, InputStream, писатель, розетки, соединение и т. Д. Перед Java 7 он обычно отображает метод Close (). В Java 7 вы можете проигнорировать, не закрыто ли она. Мы можем использовать код кода Try-with-resources.
Импорт java.io.bufferedReader; import java.io.filereader; открытый класс tryTest { /** Примите путь к файлу перед Java 7* / public Static String tryTest (String Path) {BufferedReader br = null; try {br = new BufferedReader (new FileReader (path)); return br.readline (); } catch (Exception e) {System.err.println ("BufferedReader Exception" + e); } наконец {if (br! = null) {try {br.close (); br.ready (); // Поток был закрыт, здесь брошено исключение} Catch (Exception e) {System.err.println ("BufferedReader Close Exception" + e); } } } возвращаться ""; } / * * Путь принять файл java7 * /public static String tryTest1 (path) { / * * Когда запускается блок оператора try, FileInputStream будет автоматически закрыт. Это связано с тем, что FileInputStream реализует интерфейс java.lang.autoclosable в Java. * Все классы, которые реализуют этот интерфейс, могут использоваться в структуре Try-with-resources. */ try (BufferedReader br = new BufferedReader (new FileReader (path))) {return br.readline (); } catch (Exception e) {System.err.println ("BufferedReader Exception" + e); } возвращаться ""; } public static void main (string [] args) {tryTest ("c: //users//huangjiawei//desktop//my-release-key.keystore"); tryTest1 ("c: //users//huangjiawei//desktop//my-release-key.keystore"); }}4. Поймайте несколько исключений
Перед Java 7 необходимо включить несколько пунктов с уловами, чтобы поймать несколько исключений. В Java 7 мы можем написать таким образом:
Import java.util.date;/*** Операторы с множественными уловами выполнят только первое исключение улова, которое соответствует. Независимо от того, сколько уловов их, их игнорируют * @author huangjiawei * */public class catchtest {/ * * до java 7 */public static void catchtest () {int a = 100; int b = 0; Дата даты = null; try {System.err.println (date.getTime ()); // Исключение выставлено здесь, и следующее утверждение не будет выполнено! int result = a/b; // system.err.println (result); // не выполнено} catch (nullpointerexception e) {system.err.println (e); // java.lang.nullpointerexception} catch (arithmeticexception e) {system.err.println (e); } catch (Exception e) {System.err.println (e); }} / * * java 7 * / public static void catchtest1 () {int a = 100; int b = 0; Дата даты = null; try {int result = a/b; System.err.println (результат); System.err.println (date.getTime ()); } catch (arithmeticexception | nullpointerException e) {System.err.println (e); // java.lang.arithmeticexception:/by Zero}} public void main (string [] args) {catchTest (); CatchTest1 (); }}5. Вывод типа создания экземпляра
Импорт java.util.arraylist; import java.util.list; открытый класс Typetest { /** до и после Java 7, оба типа должны быть объявлены* / list <string> list = new ArrayList <string> (); /** java 7, после <> не нужно объявлять тип, и его тип будет автоматически выведен на основе предыдущего <>*/ list <string> list1 = new ArrayList <> ();}6. Улучшенная файловая система
Java7 запустил новый API NIO2.0 для изменения неудобства по отношению к управлению файлами, так что использование обычно используемых типов, таких как Path, Paths, Files, WatchService, файловая система и другие продукты в рамках пакета Java.nio.file может значительно упростить работу разработчиков по управлению файлами.
6.1 Интерфейс пути и класс пути
Некоторые функции интерфейса пути могут быть эквивалентны классу файлов в пакете Java.io. Конечно, эти функции ограничены операциями только для чтения. В реальной разработке разработчики могут использовать интерфейс Path и класс Paths для получения ряда контекстной информации файла.
Используйте интерфейс пути и тип путей, чтобы получить информацию о файле:
Импорт java.nio.file.path; import java.nio.file.paths; public class pathpathstest {public static void main (string [] args) {path = paths.get ("c: ///users//huangjiawei///desktop///my-reeleas-key.keystore"); System.out.println ("Количество узлов файлов:" + path.getnamecount ()); // количество узлов файлов: 4 System.out.println ("Имя файла:" + path.getFilename ()); // Имя файла: my-release-key.keystore System.out.println ("файл root Directory:" + path.getroot ()); // файл root Directory: c: /system.out.println ("Справочник Association File Oversion:" + path.getParent ()); // Справочник Association Association: C:/users/huangjiawei/desktop}}6.2. Файлы класс
Использование интерфейса Path и класса Paths может легко получить доступ к контекстной информации целевого файла. Конечно, все эти операции только для чтения. Если разработчики хотят выполнять другие операции, не прочитав, в файлах, такие как создание, модификация, удаление и т. Д., Они могут использовать тип файлов для работы.
Общие методы типа файлов следующие:
Пример копирования и вставки файлов с использованием типа файлов:
Files.copy (paths.get ("/test/src.xml"), paths.get ("/test/target.xml"));Использование типа файлов для управления файлами является более удобным и простым, чем традиционные методы ввода -вывода. Поскольку конкретная реализация операции будет передана API NIO2.0, разработчикам не нужно обращать внимание.
6.3. Смотрение
Java7 также предоставляет разработчикам новый набор функций файловой системы, а именно мониторинг файлов. Здесь может быть много друзей, которые не знают, каково значение и цель мониторинга файлов. Поэтому, пожалуйста, вспомните веб -контейнер, который был отлажен в функции горячего выпуска. Когда проект итерация и перепроверлен, разработчикам не нужно вручную перезагрузить его, потому что, как только веб-контейнер обнаружит, что файл меняется, он автоматически адаптируется к этим «изменениям» и перезагружается внутри. Функция горячей публикации веб -контейнеров также основана на функции мониторинга файлов, поэтому необходимо признать, что появление функции мониторинга файлов имеет большое значение для файловой системы Java.
Мониторинг файлов основан на событиях, а запуск событий является обязательным условием для мониторинга. Разработчики могут использовать 3 буквальных константа, предоставленных типом StandardWatchEventKinds в пакете java.nio.file для определения типов событий мониторинга. Стоит отметить, что события мониторинга должны быть зарегистрированы в экземпляре WatchService.
Мониторинг событий, предоставленных типом StandardWatchEventKinds:
Полный пример реализации мониторинга файлов с помощью класса WatchService:
Импорт java.nio.file.filesystems; import java.nio.file.path; импорт java.nio.file.paths; импорт java.nio.file.standardwatcheventkinds; импорт java.nio.file.watchevent; импорт java.file.watchkey; java.nio.file.watchservice;/*** Система мониторинга файлов* @author huangjiawei*/public class watchviewtest {public static void testwatch () {/* Мониторинг целевого пути*/path path = paths.get ("/// users // huangjiawei // desktop"); Попробуйте { /* Создать объект мониторинга файла. */ Watchservice watchservice = fileystems.getDefault (). NewWatchService (); /* Зарегистрируйте все типы событий для мониторинга файлов. */ path.register (WatchService, StandardWatchEventKinds.Entry_create, StandardWatchEventKinds.Entry_Delete, StandardWatchEventKinds.Entry_Modify); /* Файл мониторинга цикла. */ while (true) {watchkey watchkey = watchservice.take (); /* ИТРАТИВАТЬ ВСЕМ ФИЛИАЛЬНЫЕ, которые запускают событие*/ for (watchevent <?> Event: watchkey.pollevents ()) {System.out.println (event.context (). ToString () + "Тип события:" + event.kind ()); } if (! watchkey.reset ()) {return; }}} catch (Exception e) {e.printstackTrace (); }} public static void main (string [] args) {testwatch (); }} Через приведенные выше примеры программы мы видим, что использование интерфейса WatchService для мониторинга файлов очень просто и удобно. Сначала нам нужно определить целевой путь мониторинга, а затем вызовать метод NewWatchService () типа файловых систем для создания объекта WatchService. Далее нам нужно использовать метод регистрации () интерфейса Path для регистрации экземпляра WatchService и мониторинга событий. Когда все эти основные рабочие слои будут готовы, мы пишем периферийный цикл мониторинга в реальном времени. Наконец, итерация над WatchKey, чтобы получить все файлы, которые запускают события мониторинга.
Теперь я наконец знаю основной принцип так называемого горячего обновления Dev-Tools в Spring Boot! Оказывается, JDK предоставляет такие API.
Суммировать
Выше приведено анализ кода JDK 7 Новых функций Краткое введение редактором. Я надеюсь, что это будет полезно для вас. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит вам вовремя. Большое спасибо за вашу поддержку сайту wulin.com!