Expression expected

95
23 марта 2022, 05:00

Решил найти как использовать метод из одного класса в другом, нашел вот такое:

private Class Name = new Class();

Испробовал у себя. Из класса Handle нужно использовать метод EntityNameRussian в классе Manage. В классе Manage вбиваю

private Handler handler = new Handler(Main);

Выдаёт "Handler (Main) in Handler cannot be applied to ()". Попробовал указать так

Handler handler = new Handler(Main);

После этого ошибка Expression expected. Сразу извиняюсь если где-нибудь дико туплю, в джаве недавно. Как это можно решить?

Answer 1

Чтобы использовать любой метод с известной нам сигнатурой, можно пойти через передачу ссылки на ф-ю:

class MyMath{
    public static int factorial(int n){
        if(n <= 1){
            return 1;
        }
        return n * factorial(n - 1);
    }
}
class factorialAnyAlgorithmCalculator{
    Function<Integer, Integer> factorial;
    public factorialAnyAlgorithmCalculator(Function<Integer, Integer> factorial){
        this.factorial = factorial;
    }
    public Integer getFactorial(Integer n) {
        return factorial.apply(n);
    }
}

Тест:

System.out.println(new factorialAnyAlgorithmCalculator(MyMath::factorial).getFactorial(4));

Вывод:

24

А по теме - вы должны написать Main.class. Запись:

Class class1 = Main.class;

Верна, запись же:

Class class1 = Main;

Неверна.

READ ALSO
Клиент-серверное приложение в Android

Клиент-серверное приложение в Android

У меня есть БД в phpmyadmin, а также сайтМне надо брать данные с этой БД (или сайта), анализировать, а потом показывать информацию в приложении

67
Java Socket передача объекта класса от клиента серверу

Java Socket передача объекта класса от клиента серверу

Изучаю Java Socket и клиент серверную часть, непонятен момент передачи объекта класса (имен и значений переменных для проведения вычислений) от клиента...

91
Рефакторинг части кода в Intellij Idea

Рефакторинг части кода в Intellij Idea

Каким образом можно в IDE заменить часть кода таким образом, например я решил ввести

78
Почему не проходит HQL запрос?

Почему не проходит HQL запрос?

Подскажите, пожалуйста, что здесь не так? Хочу извлечь salary,subject, FirstName данные три поля, при том, что salary>500, но получаю Exception вида

88