所以我想在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对象接缝这么奇怪.我该如何声明这个监听器?
谢谢!
这可能是关于函数式编程的问题而不是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对它执行操作,但这在这里无关紧要)?
给定一个潜在的大图像(或二维数字数组),我想循环所有像素(或数字),例如计算所有黑色(或0值).
我知道我可以简单地使用一个理解
for (y <- 0 until img.height; x <- 0 until img.width) {
...
}
Run Code Online (Sandbox Code Playgroud)
但是我需要一个可变的变量来计算.这可能不是一个真正的问题,但假设我不想要这个并且想要使用更多功能的样式,如何在不创建宽度为x高度元素的大型数据结构的情况下执行此操作(换句话说,保留内存 - 效率0 until img.height和0 until img.width范围)?
我们有一个 Vaadin 14 (Flow) 应用程序,它的前端是一个 Apache 反向代理,该代理与Gluu集成以进行身份验证。
当会话不再有效时,无论是由于会话超时还是在另一个浏览器选项卡/窗口中注销,Apache 服务器都会向 Gluu 服务器发送重定向,让用户再次登录。然而,当内部 Vaadin XHR调用(Ajax 请求)发生这种情况时,Vaadin 似乎不能很好地处理此响应,并显示“来自服务器的无效 JSON 响应”错误。
我想要的是 Vaadin 将浏览器位置设置为重定向中指示的 URL,或者刷新页面(可能之间有确认消息),在这种情况下,浏览器将很好地遵循重定向。如何实现这一目标,或者还有哪些其他选择?
假设您正在编写一个尾递归循环函数来根据某些标准评估元素集合,并希望最终得到最佳得分的元素及其得分.
当然,到目前为止,您将传递最佳得分元素及其得分作为函数的参数.
但由于在递归开始时没有最佳元素,您最初应该将哪些元素作为参数传递给循环函数?不想使用null,您可以将其Option[T]用作参数类型,但是isEmpty当您知道在初始调用之后它始终具有值时,您必须在每次递归时检查.有没有更好的方法?
为什么这段代码在这里返回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的用途是什么?
我有一些 Vaadin 22 + Spring Boot 应用程序,我想为其创建一个 .jar 库,其中包含一些可以在多个应用程序中共享和重用的组件(主要是由标准 Vaadin Flow 组件组成的简单 java 组件)。
每个组件都会有一些专用的 CSS(全局的,而不是影子 DOM)。
通常,当 Spring Boot 服务定义自己的组件时,这些样式位于 /frontend 文件夹中,组件可以使用注释导入它们@CssImport。
我应该如何打包 .jar 库,以便该库中的组件可以用来@CssImport导入也来自同一 .jar 库的 CSS?
我有一个 Vaadin 22 应用程序,其视图有 2 个Select彼此相邻的字段。它们属于在一起(实际上是月份和年份的下拉菜单),并且只需要一个标签,该标签比左侧的组件长。
我尝试将其放在左侧组件上,但随后它被切断:
我正在尝试声明一个必须实现特定接口的对象.我认为以下内容可以在Java中使用,就像在其他一些语言中一样,但我在这里不知所措:
Class<? implements **theInterface**> implementingObject
Run Code Online (Sandbox Code Playgroud)
任何指针将不胜感激
我想显示用户所需的素数.例如,如果用户想要第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)