Да, если вы используете последнюю версию Java, которая является версией 8. Java8 позволяет определять анонимные функции, которые были невозможны в предыдущих версиях.
Давайте возьмем пример из документов java , чтобы узнать, как мы можем объявить анонимные функции, классы
В следующем примере HelloWorldAnonymousClasses используется анонимный
классы в операторах инициализации локальных переменных
frenchGreeting и spanishGreeting, но использует локальный класс для
инициализация переменной englishGreeting:
public class HelloWorldAnonymousClasses {
interface HelloWorld {
public void greet();
public void greetSomeone(String someone);
}
public void sayHello() {
class EnglishGreeting implements HelloWorld {
String name = "world";
public void greet() {
greetSomeone("world");
}
public void greetSomeone(String someone) {
name = someone;
System.out.println("Hello " + name);
}
}
HelloWorld englishGreeting = new EnglishGreeting();
HelloWorld frenchGreeting = new HelloWorld() {
String name = "tout le monde";
public void greet() {
greetSomeone("tout le monde");
}
public void greetSomeone(String someone) {
name = someone;
System.out.println("Salut " + name);
}
};
HelloWorld spanishGreeting = new HelloWorld() {
String name = "mundo";
public void greet() {
greetSomeone("mundo");
}
public void greetSomeone(String someone) {
name = someone;
System.out.println("Hola, " + name);
}
};
englishGreeting.greet();
frenchGreeting.greetSomeone("Fred");
spanishGreeting.greet();
}
public static void main(String... args) {
HelloWorldAnonymousClasses myApp =
new HelloWorldAnonymousClasses();
myApp.sayHello();
}
}
Синтаксис анонимных классов
Рассмотрим экземпляр объекта frenchGreeting:
HelloWorld frenchGreeting = new HelloWorld() {
String name = "tout le monde";
public void greet() {
greetSomeone("tout le monde");
}
public void greetSomeone(String someone) {
name = someone;
System.out.println("Salut " + name);
}
};
Выражение анонимного класса состоит из следующего:
- Оператор
new
Имя интерфейса для реализации или класса для расширения. В этом
Например, анонимный класс реализует интерфейс
HelloWorld.
Скобки, которые содержат аргументы конструктора, как
нормальное выражение создания экземпляра класса. Примечание: при реализации
интерфейс, нет конструктора, поэтому вы используете пустую пару
скобки, как в этом примере.
Тело, которое является телом объявления класса. Более конкретно, в
Тело, объявления методов допускаются, а операторы - нет.