小编her*_*man的帖子

如何在Kotlin中将函数声明为变量

所以我想在Kotlin创建一个监听器.我只想传递一个将在我的代码中执行的方法.像这样:

override fun setButtonClickListener(listener: (text: String) -> Unit) {
    this.listener = listener
}
Run Code Online (Sandbox Code Playgroud)

但是,当我宣布我的听众时,我必须这样声明:

private var listener : (text: String) -> Unit = null!!
Run Code Online (Sandbox Code Playgroud)

否则我的AS会抱怨.但是这个 !!在一个null对象接缝这么奇怪.我该如何声明这个监听器?

谢谢!

functional-programming listener kotlin

4
推荐指数
1
解决办法
3716
查看次数

使用Java8的Optional <T>以功能方式更新源的默认值

这可能是关于函数式编程的问题而不是Java 8的问题,但它正是我现在正在使用的.

我有一个源对象(可能代表一个存储库,或者一个会话......,这里没关系),它有一个retrieveSomething()返回的方法Optional<SomethingA>.我有一个方法返回一个Something,通过调用retrieveSomething()并提供一个默认值,以防可选项为空,如下所示:

return source.retrieveSomething()
             .orElseGet(() -> provideDefaultValue());
Run Code Online (Sandbox Code Playgroud)

现在我想修改此代码,以便在源不包含任何值的情况下(因此可选项为空),源将使用提供的默认值进行更新.

当然,我可以在lambda表达式代码块中轻松完成:

return source.retrieveSomething()
             .orElseGet(() -> {
                     Something sth = provideDefaultValue()
                     source.putSomething(sth);
                     return sth;
                 });
Run Code Online (Sandbox Code Playgroud)

但如果我理解正确,我不应该使用导致副作用的功能.那么做到这一点的"正确"(功能)方法是什么,保持使用的好处Optional(在实际代码中我实际上也在map对它执行操作,但这在这里无关紧要)?

java functional-programming java-8

3
推荐指数
1
解决办法
1420
查看次数

Scala:折叠二维数组

给定一个潜在的大图像(或二维数字数组),我想循环所有像素(或数字),例如计算所有黑色(或0值).

我知道我可以简单地使用一个理解

for (y <- 0 until img.height; x <- 0 until img.width) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

但是我需要一个可变的变量来计算.这可能不是一个真正的问题,但假设我不想要这个并且想要使用更多功能的样式,如何在不创建宽度为x高度元素的大型数据结构的情况下执行此操作(换句话说,保留内存 - 效率0 until img.height0 until img.width范围)?

functional-programming scala

2
推荐指数
1
解决办法
723
查看次数

如何在 Vaadin 14 中处理 SSO 重定向

我们有一个 Vaadin 14 (Flow) 应用程序,它的前端是一个 Apache 反向代理,该代理与Gluu集成以进行身份​​验证。

当会话不再有效时,无论是由于会话超时还是在另一个浏览器选项卡/窗口中注销,Apache 服务器都会向 Gluu 服务器发送重定向,让用户再次登录。然而,当内部 Vaadin XHR调用(Ajax 请求)发生这种情况时,Vaadin 似乎不能很好地处理此响应,并显示“来自服务器的无效 JSON 响应”错误。

我想要的是 Vaadin 将浏览器位置设置为重定向中指示的 URL,或者刷新页面(可能之间有确认消息),在这种情况下,浏览器将很好地遵循重定向。如何实现这一目标,或者还有哪些其他选择?

vaadin vaadin10 vaadin-flow vaadin14

2
推荐指数
1
解决办法
1086
查看次数

循环中的初始值

假设您正在编写一个尾递归循环函数来根据某些标准评估元素集合,并希望最终得到最佳得分的元素及其得分.

当然,到目前为止,您将传递最佳得分元素及其得分作为函数的参数.

但由于在递归开始时没有最佳元素,您最初应该将哪些元素作为参数传递给循环函数?不想使用null,您可以将其Option[T]用作参数类型,但是isEmpty当您知道在初始调用之后它始终具有值时,您必须在每次递归时检查.有没有更好的方法?

recursion scala

1
推荐指数
1
解决办法
140
查看次数

如何在java中使用字节?

为什么这段代码在这里返回221?这背后的逻辑是什么?这怎么工作?请向我解释一下,因为我是Java新手.

import java.io.UnsupportedEncodingException;


public class Checksrting {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        byte[] byteArray = new byte[2];
        byteArray[0] = 100;
        byteArray[1] = 100;

        Long ID = null;
        try {
            ID = Long.parseLong(new String(byteArray, "utf-8").trim(), 16);
            System.out.print(ID);
        } catch (NumberFormatException | UnsupportedEncodingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

那么请向我解释一下utf-8和16的用途是什么?

java string byte

1
推荐指数
1
解决办法
197
查看次数

.jar 库中带有样式表的 Vaadin 组件

我有一些 Vaadin 22 + Spring Boot 应用程序,我想为其创建一个 .jar 库,其中包含一些可以在多个应用程序中共享和重用的组件(主要是由标准 Vaadin Flow 组件组成的简单 java 组件)。

每个组件都会有一些专用的 CSS(全局的,而不是影子 DOM)。

通常,当 Spring Boot 服务定义自己的组件时,这些样式位于 /frontend 文件夹中,组件可以使用注释导入它们@CssImport

我应该如何打包 .jar 库,以便该库中的组件可以用来@CssImport导入也来自同一 .jar 库的 CSS?

vaadin vaadin-flow

1
推荐指数
1
解决办法
118
查看次数

Vaadin 中输入组件的长标签

我有一个 Vaadin 22 应用程序,其视图有 2 个Select彼此相邻的字段。它们属于在一起(实际上是月份和年份的下拉菜单),并且只需要一个标签,该标签比左侧的组件长。

我尝试将其放在左侧组件上,但随后它被切断:

在此输入图像描述 实现这一目标的最简单方法是什么?

vaadin vaadin-flow

1
推荐指数
1
解决办法
53
查看次数

声明实现接口的对象

我正在尝试声明一个必须实现特定接口的对象.我认为以下内容可以在Java中使用,就像在其他一些语言中一样,但我在这里不知所措:

Class<? implements **theInterface**> implementingObject
Run Code Online (Sandbox Code Playgroud)

任何指针将不胜感激

java generics interface class implements

0
推荐指数
1
解决办法
647
查看次数

用户在Java中需要的素数

我想显示用户所需的素数.例如,如果用户想要第3个素数,我将显示5.我有以下java代码.

import java.util.Scanner;

public class Prime {

private static Scanner scanner;


public static void main(String args[]) {

 //get input till which prime number to be printed
 // System.out.println("Enter which prime number to be printed: ");
//  scanner = new Scanner(System.in);
//  int limit = scanner.nextInt();
  int count = 0;
  int number = 2;
  //System.out.println("Printing prime number from 1 to " + limit);
  while(count<=3)
  {
      if(isPrime(number)){
          count++;
         // System.out.println(count);
      }
      number++;
  }
  if(count == 3)
      System.out.println("10001 prime is "+number);

    }


public …
Run Code Online (Sandbox Code Playgroud)

java algorithm primes

-1
推荐指数
1
解决办法
222
查看次数