我正在检查JDK 8 API和内部Function
接口我注意到身份功能
static <T> Function<T, T> identity() {
return t -> t;
}
Run Code Online (Sandbox Code Playgroud)
这解决方法:
R apply(T t);
Run Code Online (Sandbox Code Playgroud)
在同一个Function
界面声明.
问题是t -> t
部分有效的原因.
如果我们根据熟悉的匿名内部类扩展这个表达式
new Function<String, String>() {
@Override
String apply(String t) {
t; // Oops, compilation error
}
}
Run Code Online (Sandbox Code Playgroud)
是t -> t
一种捷径t -> { return t; }
吗?
对我来说,在 Convert 类中进行以下重载是有意义的
public static double ToDouble(string value, IFormatProvider provider);
Run Code Online (Sandbox Code Playgroud)
例子:
Console.WriteLine(Convert.ToDouble("3223.2", CultureInfo.InvariantCulture)); // success
Console.WriteLine(Convert.ToDouble("3223,2", new CultureInfo("fr-FR"))); // success
Console.WriteLine(Convert.ToDouble("3223.2", new CultureInfo("fr-FR"))); // failure
Run Code Online (Sandbox Code Playgroud)
但是使用以下重载的示例是什么?
public static int ToInt32(string value, IFormatProvider provider);
Run Code Online (Sandbox Code Playgroud)
下面一切都失败了:
Console.WriteLine(Convert.ToInt32("3223.2", CultureInfo.InvariantCulture));
Console.WriteLine(Convert.ToInt32("3223,2", new CultureInfo("fr-FR")));
Console.WriteLine(Convert.ToInt32("3223.2", new CultureInfo("fr-FR")));
Run Code Online (Sandbox Code Playgroud)
换句话说,是否存在任何有效的整数字符串表示形式(在任何区域性中),如果不指定 IFormatProvider 就无法将其转换为 int?