Локальный класс
Локальный класс - это класс, который объявляется внутри тела метода.
Он виден только в пределах этого метода и не может быть использован
за его пределами. Локальный класс имеет доступ к полям и методам
внешнего класса, а также к локальным переменным метода, если они
объявлены как final или являются effectively final
(то есть не изменяются после инициализации).
Синтаксис
class OuterClass
{
void method()
{
class LocalClass
{
// body of local class
}
LocalClass obj = new LocalClass();
}
}
Пример
Давайте создадим локальный класс внутри метода и вызовем его метод:
public class Main
{
public static void main(String[] args)
{
class Local
{
void print()
{
System.out.println("Hello from local class");
}
}
Local obj = new Local();
obj.print();
}
}
Результат выполнения кода:
"Hello from local class"
Пример
Локальный класс может обращаться к локальным переменным метода, если они являются effectively final:
public class Main
{
public static void main(String[] args)
{
String str = "abcde";
class Local
{
void print()
{
System.out.println(str);
}
}
Local obj = new Local();
obj.print();
}
}
Результат выполнения кода:
"abcde"
Пример
Давайте создадим локальный класс, который суммирует элементы списка:
import java.util.List;
public class Main
{
public static void main(String[] args)
{
List<Integer> numbers = List.of(1, 2, 3, 4, 5);
class Summator
{
int sum(List<Integer> list)
{
int res = 0;
for (int num : list)
{
res += num;
}
return res;
}
}
Summator s = new Summator();
System.out.println(s.sum(numbers));
}
}
Результат выполнения кода:
15
Смотрите также
-
класс
inner-class,
который объявляется внутри класса -
класс
anonymous,
который не имеет имени -
класс
static-nested,
который объявляется как статический вложенный -
класс
decl,
который описывает объявление класса