Тип возврата Lambda как общий [dубликат]

Не уверен в JWT, но вы можете обязательно добавить аутентификацию на основе сертификата клиента, которая может помочь в обеспечении безопасности ваших пакетов, если это ваша главная проблема.

apt-get install apt-transport-https

и получить настройку конфигурации

Acquire::https::packagedomain.name.com::Verify-Peer "false";
Acquire::https::packagedomain.name.com::Verify-Host "false";
Acquire::https::packagedomain.name.com::CaInfo "/certs/ca.pem";
Acquire::https::packagedomain.name.com::SslCert "/path/clientcert.pem";
Acquire::https::packagedomain.name.com::SslKey  "/path/clientkey.pem";

на стороне nginx включить следующие директивы

[F2]
0
задан 13 August 2018 в 15:49

2 ответа

Вы не можете использовать лямбда-выражение для функционального интерфейса с общим методом.

Функциональность вашего интерфейса будет более понятна, если быть общим:

public interface InnerLambda<R> {    
    R test(String str);    
}

Вот несколько примеров.

Чтобы связать параметр String с другой строкой:

InnerLambda<String> l1 = s -> s + "other string";

Чтобы вернуть логическое значение в соответствии с значением null:

InnerLambda<Boolean> l2 = Objects::nonNull;
0
ответ дан 15 August 2018 в 16:59
  • 1
    нет, это не о том, как это будет иметь смысл или нет. не проголосовали, кстати;) – Eugene 13 August 2018 в 15:51
  • 2
    @Eugene Reworded. Я этого не знал. Я прочитал дублированный дубликат. – davidxxx 13 August 2018 в 16:01

Хорошо, если у вас будет такой интерфейс:

@FunctionalInterface // Ensure if your interface have only one bastract method.
public interface InnerLambda<R> {

    public R test(String str);

}

Есть много способов сделать это, один из них приведен ниже:

InnerLamda innerLamda = str -> {
    //implementation will go here.
    // return the response
}

// Вы может вызывать с помощью следующей строки

int length = innerLamda.test («вход»);

Lamda определит значение R на основе значения, которое вы возвращаете из вашей lamda.

Редактирование:

, если вы хотите сделать это с помощью generic на уровне метода, тогда вы можете сделать это с помощью ссылок на методы, поскольку он не поддерживается lamda, как указано в следующем документе:

https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.27.3

Пример ссылки метода

ниже:

//class_name::<type_here>method_name
lamdaFunctions::<String>process

Lamda определит значение R на основе значения, которое вы возвращаете из своей лампы.

0
ответ дан 15 August 2018 в 16:59
  • 1
    случилось ли с попробовать это? – Eugene 13 August 2018 в 15:48
  • 2
    Привет .. @Shivang, который даст вам ошибку времени компиляции – Karunakar Reddy L 13 August 2018 в 15:52
  • 3
    Ваше редактирование переместило параметр типа genric в класс, который не охватывает вопрос (как и ответ davidxxx). – mtj 13 August 2018 в 15:53
  • 4
    Поскольку вы создали общий тип InnerLamda, объявление InnerLamda innerLamda использует исходный тип . – Holger 13 August 2018 в 15:54
  • 5
    Конечно, мы можем использовать общий тип там, я хотел использовать общий тип на уровне метода вместо уровня класса. – Karunakar Reddy L 13 August 2018 в 15:57

Другие вопросы по тегам:

Похожие вопросы: