Показаны сообщения с ярлыком Core. Показать все сообщения
Показаны сообщения с ярлыком Core. Показать все сообщения
понедельник, 4 февраля 2013 г.
Nested and inner classes
Вложенные классы делятся на статические и нестатические (non-static).
Собственно нестатические вложенные классы имеют и другое название - внутренние
классы (inner). Внутренние классы в Java делятся на три вида: внутренние
классы-члены (member inner classes); локальные классы (local classes);
анонимные классы (anonymous classes). Локальный класс – в пределах метода или
блока, не может быть public, private, protected, static.
Раннее и позднее связывание
public class LinkageTest{
public static class Parent{
public void test(){
System.out.println("parent::test");
}
}
public static class Child extends Parent{
public void test(){
System.out.println("child::test");
}
}
public static class Tester{
public void test(Parent obj){
System.out.println("Testing parent...");
obj.test();
}
public void test(Child obj){
System.out.println("Testing child...");
obj.test();
}
}
public static void main(String[] args){
Parent obj = new Child();
Tester t = new Tester();
t.test(obj);
}
}
Результатом выполнения будет: Testing parent... child::test
воскресенье, 3 февраля 2013 г.
Exceptions and finally blocks
public class ExceptionLossTest{
public static void main(String[] args){
try {
try {
throw new Exception("a");
} finally {
if (true) {
throw new IOException("b");
}
System.err.println("c");
}
} catch (IOException ex) {
System.err.println(ex.getMessage());
} catch (Exception ex) {
System.err.println("d");
System.err.println(ex.getMessage());
}
}
}
Результатом его выполнения будет вывод в консоль b. И только. Return в finally тоже
затирает другие ретурны
вторник, 9 августа 2011 г.
UnsupportedOperationException
Столкнулся с UnsupportedOperationException при попытке вызова метода add() у объекта через ссылку типа List. Проблема оказалась в следующем: один из вызываемых методов присваивал этой переменной значение Collections.EMPTY_LIST, который является Immutable (т.е. неизменяемым) объектом, соответственно при попытке вызвать add() выбрасывается UnsupportedOperationException.
Очень кратко это выглядит так:
P.S. Collections.emptyList() и Collections.EMPTY_LIST отличаются только тем, что метод emptyList() является type-safety.
Очень кратко это выглядит так:
- List<Object> list = Collections.emptyList();
- list.add(new Object()); // здесь будет выброшено UnsupportedOperationException
P.S. Collections.emptyList() и Collections.EMPTY_LIST отличаются только тем, что метод emptyList() является type-safety.
Подписаться на:
Сообщения (Atom)