SlideShare ist ein Scribd-Unternehmen logo
1 von 53
Downloaden Sie, um offline zu lesen
Java весна 2013 лекция 6
Java весна 2013 лекция 6
Java весна 2013 лекция 6
Java весна 2013 лекция 6
public class Singleton {
private static Singleton singleton;
public static Singleton instance(){
if(singleton == null){
singleton = new Singleton();
}
return singleton;
}
private Singleton(){}
}
Java весна 2013 лекция 6
public class Context {
private Map<Class<?>, Object> context = new HashMap<Class<?>, Object>();
public void add(Class<?> clazz, Object object){
if(context.containsKey(clazz)){
//ERROR
}
context.put(clazz, object);
}
public Object get(Class<?> clazz){
return context.get(clazz);
}
}
Java весна 2013 лекция 6
Java весна 2013 лекция 6
public Integer getId(String name){…}
public class Throwable
private StackTraceElement[] stackTrace = UNASSIGNED_STACK
private String detailMessage
private Throwable cause = this
public String getMessage()
public void printStackTrace()
public Throwable getCause()
Java весна 2013 лекция 6
public class Exception extends Throwable
public Exception()
public Exception(String message)
public Exception(String message, Throwable cause)
public Exception(Throwable cause)
public class GMException extends Exception
public GMException(){…}
public GMException(String message, Throwable cause){
super(message, cause)
…
}
public void setIdFromName(String name){
try{
userId = getId(name);
} catch(GMException e){
log.error(e.getMessage());
}
}
private int getId(String name) throws GMException{
DatabaseManager manager = context.get(DatabaseManager.class);
if(manager == null){
throw new GMException(“Can’t find DBManager”);
}
return manager.readId(name);
}
Java весна 2013 лекция 6
Java весна 2013 лекция 6
Java весна 2013 лекция 6
public interface EventListener {
public void handle(EventObject event);
}
public class EventListenerImpl implements EventListener {
//code
public void handle(...){
//process event
}
}
public class EventSource {
private List<EventListener> listeners = new LinkedList<EventListener>();
public void addListener(EventListener listener){
listeners.add(listener);
}
public void removeListener(EventListener listener){
listeners.remove(listener);
}
public void fireEvent(){
for(MyEventListener listner : listeners){
listner.handle(...);
}
}
}
Java весна 2013 лекция 6
Java весна 2013 лекция 6
class HelloWorld extends AbstractHandler { //из примера jetty
public void handle(...) { //это callback
Java весна 2013 лекция 6
interface A{ //библиотечный интерфейс
handle(); //callback
}
class Aimpl implements A{ //реализация интерфейса
handle(){…}
}
class B{
static void proccessA(A a){…} //вызов callback-a в библиотеке
static void main(String[] args){
B.proccessA(new AImpl()); //передача реализации в библиотеку
}
}
interface A{ //библиотечный интерфейс
handle(); //callback
}
class B{
static void proccessA(A a){…} //вызов callback-a в библиотеке
static void main(String[] args){
B.proccessA(new A (){ //передача реализации в библиотеку
handle(){…} //анонимный класс
});
}
}
Java весна 2013 лекция 6
Java весна 2013 лекция 6
Java весна 2013 лекция 6
Java весна 2013 лекция 6
Java весна 2013 лекция 6
Java весна 2013 лекция 6
Java весна 2013 лекция 6
public class TimeHelper {
public static long getTimeInMs(){
Date date = new Date();
return date.getTime();
}
public static int getPOSIX(){
Date date = new Date();
int millisInSecond = 1000;
return (int)(date.getTime() / millisInSecond);
}
public static String getUserDateFull(Locale locale){
Date date = new Date();
DateFormat dateFormatter =
DateFormat. getDateInstance(DateFormat.FULL, locale);
return dateFormatter.format(date);
}
}
Java весна 2013 лекция 6
int timeMs = 10000;
TimeService.instance().start();
TimeService.instance().sheduleTask(new TimerTask(){
public void run() {
System.out.append("Timer run!n");
TimeService.instance().stop();
}
}, timeMs);
Java весна 2013 лекция 6
―
―
―
Java весна 2013 лекция 6
public class FilterInputStream extends InputStream
private InputStream in;
protected FilterInputStream(InputStream in){
this.in = in;
}
Java весна 2013 лекция 6
Java весна 2013 лекция 6
Java весна 2013 лекция 6
public class SimpleFileReader {
public static void main(String args[]) throws IOException {
FileReader fr = new FileReader("SimpleFileReader.java");
BufferedReader br = new BufferedReader(fr);
String currentLine;
while((currentLine = br.readLine()) != null) {
System.out.println(currentLine);
}
fr.close();
}
}
public class CustomFileReader {
public static void main(String args[]) throws IOException {
FileInputStream fstream = new FileInputStream("textfile.txt");
DataInputStream in = new DataInputStream(fstream);
InputStreamReader isr = new InputStreamReader(in, "UTF-16");
BufferedReader br = new BufferedReader(isr);
String strLine;
while ((strLine = br.readLine()) != null) {
System.out.println (strLine);
}
br.close();
}
}
BufferedReader br = null;
try{
//code
br = new BufferedReader(isr);
//code
} catch (Exception e){
System.err.println("Error: " + e.getMessage());
} finally {
if(br != null){
try {
br.close();
} catch (IOException e) {
System.err.println("Error: " + e.getMessage());
}
}
}
―
Java весна 2013 лекция 6
public interface VFS {
boolean isExist(String path);
boolean isDirectory(String path);
String getAbsolutePath(String file);
byte[] getBytes(String file);
String getUFT8Text(String file);
Iterator<String> getIterator(String startDir);
}
public class VFSImpl implements VFS {
private String root;
public VFSImpl(String root){
this.root = root;
}
…
}
private class FileIterator implements Iterator<String>{
private Queue<File> files = new LinkedList<File>();
public FileIterator(String path){
files.add(new File(root + path));
}
public boolean hasNext() {
return !files.isEmpty();
}
public String next() {
File file = files.peek();
if(file.isDirectory()){
for(File subFile : file.listFiles()){
files.add(subFile);
}
}
return files.poll().getAbsolutePath();
}
public void remove() {
}
}
23. Работа со случайными числами
24. Паттерны проектирования: Singleton и Context
25. Events. Подписка на события
26. Передача функции в библиотеку. Callback
27. Анонимные классы
28. Работа со временем и датой. Unix time. Locale
29. I/O Streams. Потоки байт и потоки символов
30. Исключения: Throwable, Error, Exception, try, catch, finally
Java весна 2013 лекция 6

Weitere ähnliche Inhalte

Was ist angesagt?

Java AWT Calculadora
Java AWT CalculadoraJava AWT Calculadora
Java AWT Calculadorajubacalo
 
EJEMPLOS DESARROLLADOS
EJEMPLOS DESARROLLADOSEJEMPLOS DESARROLLADOS
EJEMPLOS DESARROLLADOSDarwin Durand
 
Создание новых объектов
Создание новых объектовСоздание новых объектов
Создание новых объектовConstantin Kichinsky
 
Шаблоны проектирования 2
Шаблоны проектирования 2Шаблоны проектирования 2
Шаблоны проектирования 2Constantin Kichinsky
 
Java лаб13
Java лаб13Java лаб13
Java лаб13Enkhee99
 
JUG.ua 20170225 - Java bytecode instrumentation
JUG.ua 20170225 - Java bytecode instrumentationJUG.ua 20170225 - Java bytecode instrumentation
JUG.ua 20170225 - Java bytecode instrumentationAnton Arhipov
 
Java Thread Cronometro
Java Thread CronometroJava Thread Cronometro
Java Thread Cronometrojubacalo
 
Import java
Import javaImport java
Import javawildled
 
Java & le pattern matching
Java & le pattern matchingJava & le pattern matching
Java & le pattern matchingDidier Plaindoux
 
Алексей Кутумов, C++ без исключений, часть 3
Алексей Кутумов,  C++ без исключений, часть 3Алексей Кутумов,  C++ без исключений, часть 3
Алексей Кутумов, C++ без исключений, часть 3Platonov Sergey
 
Sobrecarga e Sobrescrita - Preparatório Certificação - OCAJP7 - Aula 2 - F
Sobrecarga e Sobrescrita - Preparatório Certificação - OCAJP7 - Aula 2 - FSobrecarga e Sobrescrita - Preparatório Certificação - OCAJP7 - Aula 2 - F
Sobrecarga e Sobrescrita - Preparatório Certificação - OCAJP7 - Aula 2 - FPaulo Henrique Lerbach Rodrigues
 

Was ist angesagt? (20)

Java AWT Calculadora
Java AWT CalculadoraJava AWT Calculadora
Java AWT Calculadora
 
EJEMPLOS DESARROLLADOS
EJEMPLOS DESARROLLADOSEJEMPLOS DESARROLLADOS
EJEMPLOS DESARROLLADOS
 
Algoritmos 4
Algoritmos 4Algoritmos 4
Algoritmos 4
 
Danna y felix 10°
Danna y felix 10°Danna y felix 10°
Danna y felix 10°
 
1- Sourcecode Array
1- Sourcecode Array1- Sourcecode Array
1- Sourcecode Array
 
Linked list proj
Linked list projLinked list proj
Linked list proj
 
Java
JavaJava
Java
 
Создание новых объектов
Создание новых объектовСоздание новых объектов
Создание новых объектов
 
デバッグ戦略
デバッグ戦略デバッグ戦略
デバッグ戦略
 
Шаблоны проектирования 2
Шаблоны проектирования 2Шаблоны проектирования 2
Шаблоны проектирования 2
 
Java лаб13
Java лаб13Java лаб13
Java лаб13
 
JUG.ua 20170225 - Java bytecode instrumentation
JUG.ua 20170225 - Java bytecode instrumentationJUG.ua 20170225 - Java bytecode instrumentation
JUG.ua 20170225 - Java bytecode instrumentation
 
ikp213-06-template-c++
ikp213-06-template-c++ikp213-06-template-c++
ikp213-06-template-c++
 
All set1
All set1All set1
All set1
 
Java Thread Cronometro
Java Thread CronometroJava Thread Cronometro
Java Thread Cronometro
 
Import java
Import javaImport java
Import java
 
Java & le pattern matching
Java & le pattern matchingJava & le pattern matching
Java & le pattern matching
 
Алексей Кутумов, C++ без исключений, часть 3
Алексей Кутумов,  C++ без исключений, часть 3Алексей Кутумов,  C++ без исключений, часть 3
Алексей Кутумов, C++ без исключений, часть 3
 
Trabajo de programacion
Trabajo de programacionTrabajo de programacion
Trabajo de programacion
 
Sobrecarga e Sobrescrita - Preparatório Certificação - OCAJP7 - Aula 2 - F
Sobrecarga e Sobrescrita - Preparatório Certificação - OCAJP7 - Aula 2 - FSobrecarga e Sobrescrita - Preparatório Certificação - OCAJP7 - Aula 2 - F
Sobrecarga e Sobrescrita - Preparatório Certificação - OCAJP7 - Aula 2 - F
 

Andere mochten auch

Java весна 2013 лекция 8
Java весна 2013 лекция 8Java весна 2013 лекция 8
Java весна 2013 лекция 8Technopark
 
Бизнес и системный анализ весна 2013 лекция 1
Бизнес и системный анализ весна 2013 лекция 1Бизнес и системный анализ весна 2013 лекция 1
Бизнес и системный анализ весна 2013 лекция 1Technopark
 
Java осень 2012 лекция 4
Java осень 2012 лекция 4Java осень 2012 лекция 4
Java осень 2012 лекция 4Technopark
 
Java осень 2012 лекция 3
Java осень 2012 лекция 3Java осень 2012 лекция 3
Java осень 2012 лекция 3Technopark
 
C++ осень 2012 лекция 8
C++ осень 2012 лекция 8C++ осень 2012 лекция 8
C++ осень 2012 лекция 8Technopark
 
Web весна 2012 лекция 7
Web весна 2012 лекция 7Web весна 2012 лекция 7
Web весна 2012 лекция 7Technopark
 

Andere mochten auch (6)

Java весна 2013 лекция 8
Java весна 2013 лекция 8Java весна 2013 лекция 8
Java весна 2013 лекция 8
 
Бизнес и системный анализ весна 2013 лекция 1
Бизнес и системный анализ весна 2013 лекция 1Бизнес и системный анализ весна 2013 лекция 1
Бизнес и системный анализ весна 2013 лекция 1
 
Java осень 2012 лекция 4
Java осень 2012 лекция 4Java осень 2012 лекция 4
Java осень 2012 лекция 4
 
Java осень 2012 лекция 3
Java осень 2012 лекция 3Java осень 2012 лекция 3
Java осень 2012 лекция 3
 
C++ осень 2012 лекция 8
C++ осень 2012 лекция 8C++ осень 2012 лекция 8
C++ осень 2012 лекция 8
 
Web весна 2012 лекция 7
Web весна 2012 лекция 7Web весна 2012 лекция 7
Web весна 2012 лекция 7
 

Mehr von Technopark

Лекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель PregelЛекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель PregelTechnopark
 
Лекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.RuЛекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.RuTechnopark
 
Лекция 13. YARN
Лекция 13. YARNЛекция 13. YARN
Лекция 13. YARNTechnopark
 
Лекция 12. Spark
Лекция 12. SparkЛекция 12. Spark
Лекция 12. SparkTechnopark
 
Лекция 10. Apache Mahout
Лекция 10. Apache MahoutЛекция 10. Apache Mahout
Лекция 10. Apache MahoutTechnopark
 
Лекция 9. ZooKeeper
Лекция 9. ZooKeeperЛекция 9. ZooKeeper
Лекция 9. ZooKeeperTechnopark
 
Лекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и HiveЛекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и HiveTechnopark
 
Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)Technopark
 
Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)Technopark
 
Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)Technopark
 
Лекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFSЛекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFSTechnopark
 
Лекция 2. Основы Hadoop
Лекция 2. Основы HadoopЛекция 2. Основы Hadoop
Лекция 2. Основы HadoopTechnopark
 
Лекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduceЛекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduceTechnopark
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"Technopark
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...Technopark
 
СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"Technopark
 
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"Technopark
 
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"Technopark
 
СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"Technopark
 
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...Technopark
 

Mehr von Technopark (20)

Лекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель PregelЛекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель Pregel
 
Лекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.RuЛекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.Ru
 
Лекция 13. YARN
Лекция 13. YARNЛекция 13. YARN
Лекция 13. YARN
 
Лекция 12. Spark
Лекция 12. SparkЛекция 12. Spark
Лекция 12. Spark
 
Лекция 10. Apache Mahout
Лекция 10. Apache MahoutЛекция 10. Apache Mahout
Лекция 10. Apache Mahout
 
Лекция 9. ZooKeeper
Лекция 9. ZooKeeperЛекция 9. ZooKeeper
Лекция 9. ZooKeeper
 
Лекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и HiveЛекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и Hive
 
Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)
 
Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)
 
Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)
 
Лекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFSЛекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFS
 
Лекция 2. Основы Hadoop
Лекция 2. Основы HadoopЛекция 2. Основы Hadoop
Лекция 2. Основы Hadoop
 
Лекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduceЛекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduce
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
 
СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"
 
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
 
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
 
СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"
 
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
 

Java весна 2013 лекция 6

  • 5. public class Singleton { private static Singleton singleton; public static Singleton instance(){ if(singleton == null){ singleton = new Singleton(); } return singleton; } private Singleton(){} }
  • 7. public class Context { private Map<Class<?>, Object> context = new HashMap<Class<?>, Object>(); public void add(Class<?> clazz, Object object){ if(context.containsKey(clazz)){ //ERROR } context.put(clazz, object); } public Object get(Class<?> clazz){ return context.get(clazz); } }
  • 11. public class Throwable private StackTraceElement[] stackTrace = UNASSIGNED_STACK private String detailMessage private Throwable cause = this public String getMessage() public void printStackTrace() public Throwable getCause()
  • 13. public class Exception extends Throwable public Exception() public Exception(String message) public Exception(String message, Throwable cause) public Exception(Throwable cause) public class GMException extends Exception public GMException(){…} public GMException(String message, Throwable cause){ super(message, cause) … }
  • 14. public void setIdFromName(String name){ try{ userId = getId(name); } catch(GMException e){ log.error(e.getMessage()); } } private int getId(String name) throws GMException{ DatabaseManager manager = context.get(DatabaseManager.class); if(manager == null){ throw new GMException(“Can’t find DBManager”); } return manager.readId(name); }
  • 18. public interface EventListener { public void handle(EventObject event); } public class EventListenerImpl implements EventListener { //code public void handle(...){ //process event } }
  • 19. public class EventSource { private List<EventListener> listeners = new LinkedList<EventListener>(); public void addListener(EventListener listener){ listeners.add(listener); } public void removeListener(EventListener listener){ listeners.remove(listener); } public void fireEvent(){ for(MyEventListener listner : listeners){ listner.handle(...); } } }
  • 22. class HelloWorld extends AbstractHandler { //из примера jetty public void handle(...) { //это callback
  • 24. interface A{ //библиотечный интерфейс handle(); //callback } class Aimpl implements A{ //реализация интерфейса handle(){…} } class B{ static void proccessA(A a){…} //вызов callback-a в библиотеке static void main(String[] args){ B.proccessA(new AImpl()); //передача реализации в библиотеку } }
  • 25. interface A{ //библиотечный интерфейс handle(); //callback } class B{ static void proccessA(A a){…} //вызов callback-a в библиотеке static void main(String[] args){ B.proccessA(new A (){ //передача реализации в библиотеку handle(){…} //анонимный класс }); } }
  • 33. public class TimeHelper { public static long getTimeInMs(){ Date date = new Date(); return date.getTime(); } public static int getPOSIX(){ Date date = new Date(); int millisInSecond = 1000; return (int)(date.getTime() / millisInSecond); } public static String getUserDateFull(Locale locale){ Date date = new Date(); DateFormat dateFormatter = DateFormat. getDateInstance(DateFormat.FULL, locale); return dateFormatter.format(date); } }
  • 35. int timeMs = 10000; TimeService.instance().start(); TimeService.instance().sheduleTask(new TimerTask(){ public void run() { System.out.append("Timer run!n"); TimeService.instance().stop(); } }, timeMs);
  • 38.
  • 40. public class FilterInputStream extends InputStream private InputStream in; protected FilterInputStream(InputStream in){ this.in = in; }
  • 44. public class SimpleFileReader { public static void main(String args[]) throws IOException { FileReader fr = new FileReader("SimpleFileReader.java"); BufferedReader br = new BufferedReader(fr); String currentLine; while((currentLine = br.readLine()) != null) { System.out.println(currentLine); } fr.close(); } }
  • 45. public class CustomFileReader { public static void main(String args[]) throws IOException { FileInputStream fstream = new FileInputStream("textfile.txt"); DataInputStream in = new DataInputStream(fstream); InputStreamReader isr = new InputStreamReader(in, "UTF-16"); BufferedReader br = new BufferedReader(isr); String strLine; while ((strLine = br.readLine()) != null) { System.out.println (strLine); } br.close(); } }
  • 46. BufferedReader br = null; try{ //code br = new BufferedReader(isr); //code } catch (Exception e){ System.err.println("Error: " + e.getMessage()); } finally { if(br != null){ try { br.close(); } catch (IOException e) { System.err.println("Error: " + e.getMessage()); } } }
  • 47.
  • 49. public interface VFS { boolean isExist(String path); boolean isDirectory(String path); String getAbsolutePath(String file); byte[] getBytes(String file); String getUFT8Text(String file); Iterator<String> getIterator(String startDir); }
  • 50. public class VFSImpl implements VFS { private String root; public VFSImpl(String root){ this.root = root; } … }
  • 51. private class FileIterator implements Iterator<String>{ private Queue<File> files = new LinkedList<File>(); public FileIterator(String path){ files.add(new File(root + path)); } public boolean hasNext() { return !files.isEmpty(); } public String next() { File file = files.peek(); if(file.isDirectory()){ for(File subFile : file.listFiles()){ files.add(subFile); } } return files.poll().getAbsolutePath(); } public void remove() { } }
  • 52. 23. Работа со случайными числами 24. Паттерны проектирования: Singleton и Context 25. Events. Подписка на события 26. Передача функции в библиотеку. Callback 27. Анонимные классы 28. Работа со временем и датой. Unix time. Locale 29. I/O Streams. Потоки байт и потоки символов 30. Исключения: Throwable, Error, Exception, try, catch, finally