是否可以从Java代码访问扩展函数?
我在Kotlin文件中定义了扩展函数.
package com.test.extensions
import com.test.model.MyModel
/**
*
*/
public fun MyModel.bar(): Int {
return this.name.length()
}
Run Code Online (Sandbox Code Playgroud)
哪个MyModel是(生成的)java类.现在,我想用我的普通java代码访问它:
MyModel model = new MyModel();
model.bar();
Run Code Online (Sandbox Code Playgroud)
但是,这不起作用.IDE将无法识别该bar()方法,并且编译失败.
使用kotlin的静态函数可以使用什么:
public fun bar(): Int {
return 2*2
}
Run Code Online (Sandbox Code Playgroud)
通过使用import com.test.extensions.ExtensionsPackage所以我的IDE似乎正确配置.
我搜索了kotlin文档中的整个Java-interop文件,并搜索了很多内容,但我找不到它.
我究竟做错了什么?这甚至可能吗?
Map<String, List<String>>我的代码中有一个,如果map的#get()方法返回一个空列表而不是null ,我会避免使用潜在的空指针.java API中有这样的东西吗?我应该延长HashMap吗?
是否有可能(在Java中)创建一个Map,无论我要搜索什么键,我都会检索到相同的值?我们可以假设有限或无限数量的密钥。
我考虑了大小为 1 且负载因子为 1.0 的映射,并将该值存储在其中,但我几乎肯定 hashmap 实现会识别冲突,并无论如何返回 null。
我还考虑了这样一种可能性:如果我为变量创建自己的哈希函数,甚至是实现 Map 的新数据类型,我应该能够做到这一点,但可能有点混乱。也许不是?
当然,简单地将值映射到每个键将是非常低效的(除非有一个内置的方法,我忽略了),而且远没有听到 SO 的答案那么有趣。
我试图找到一种方法使HashMap返回默认值.例如,如果你看下面这将打印输出" Test:= null "如果我想请求一个默认值,所以当我试图得到一些未在hashMap中设置的东西时,我会得到这个值?
Map<String, String> test = new HashMap<String, String>();
test.put("today","monday");
System.out.println("Test =:" + test.get("hello") + "");
Run Code Online (Sandbox Code Playgroud)