新网站如何做流量,wordpress天气插件,品牌网站建设教程,网站建设兰州导读大纲 1.0.1 Java 没有默认参数值的概念1.0.2 使用 JvmOverloads 来简化调用 1.0.1 Java 没有默认参数值的概念
因此当从 Java 调用带有默认参数值的 Kotlin 函数时 1. 必须明确指定所有参数值
fun T joinToString(collection: CollectionT,separator: St… 导读大纲 1.0.1 Java 没有默认参数值的概念1.0.2 使用 JvmOverloads 来简化调用 1.0.1 Java 没有默认参数值的概念
因此当从 Java 调用带有默认参数值的 Kotlin 函数时 1. 必须明确指定所有参数值
fun T joinToString(collection: CollectionT,separator: String , ,prefix: String ,postfix: String
) : String {val result StringBuilder(prefix)for ((index, elem) in collection.withIndex()){if (index 0) result.append(separator)result.append(elem)}result.append(postfix)return result.toString()
}import java.util.List;
public class Example {public static void main(String[] args) {System.out.println(joinToString(List.of(1, 2), , , , )); // 1}
}1.0.2 使用 JvmOverloads 来简化调用
如果经常需要从 Java 调用该函数,并希望让Java调用者更容易使用该函数 可以使用 JvmOverloads 注解该函数
JvmOverloads
fun T joinToString(collection: CollectionT,separator: String , ,prefix: String ,postfix: String
) : String {val result StringBuilder(prefix)for ((index, elem) in collection.withIndex()){if (index 0) result.append(separator)result.append(elem)}result.append(postfix)return result.toString()
}JvmOverloads将指示 Kotlin 编译器为该函数生成多个重载函数 生成规则是从最后一个参数开始, 逐个省略每个具有默认值的参数1 这意味着会产生以下重载函数 对于签名中省略的参数, 每个重载会使用其对应的默认值 2 这里Java并没有指定所有参数值 而是调用最后一个重载方法
/* Java */ 1
String joinToString(CollectionT collection, String separator, String prefix, String postfix);
String joinToString(CollectionT collection, String separator, String prefix);
String joinToString(CollectionT collection, String separator);
String joinToString(CollectionT collection); // 2Java调用代码
import java.util.List;
public class Example {public static void main(String[] args) {System.out.println(joinToString(List.of(1, 2))); // 2}
}