的java.util.Properties类是代表一地图,其中键和值都是字符串.这是因为Properties对象用于读取.properties文件,文件是文本文件.
那么,为什么在Java 5中他们改进了这个类来实现Map<Object,Object>而不是Map<String,String>?
该javadoc的状态:
由于Properties继承自Hashtable,因此put和putAll方法可以应用于Properties对象.强烈建议不要使用它们,因为它们允许调用者插入其键或值不是字符串的条目.应该使用setProperty方法.如果在包含非String键或值的"受损"Properties对象上调用store或save方法,则调用将失败.
由于键和值都应该是字符串,那么为什么不使用正确的泛型类型静态强制执行呢?
我想制作Properties工具Map<String,String>不会完全向后兼容为Java 5之前编写的代码.如果你有旧的代码将非字符串粘贴到Properties对象中,那么该代码将不再用Java 5编译.但是... isn'那是件好事吗?在编译时捕获这种类型错误不是泛型的全部意义吗?
有没有办法以编程方式确定特定目录是否实际远程安装?这可以用Java完成,如果没有,可以用JNI上的本机C代码完成吗?
由于这是Java,它可以在Linux或Windows或Mac下运行,因此正确的解决方案需要解决所有这些平台.(再次,如果它与C在JNI上的多个单独的解决方案,那就好了).并且可能存在不同的情况,例如NFS或samba或其他任何情况.
谢谢.
我是Scala的新手,我对类型系统有疑问.
flatten方法适用于嵌套集合,因此如果我有一个List列表,它会将其展平为List.但是对于已经持平的集合进行扁平处理是没有意义的.当然,Scala类型检查器会将其标记为错误.
List(List(1,2,3),List(4,5,6)).flatten // produces List(1,2,3,4,5,6)
List(1,2,3,4).flatten // type error
Run Code Online (Sandbox Code Playgroud)
我知道这在某种程度上依赖于一个隐含的参数来展平.但我不知道隐含值来自何处,以及如何使用它来断言对象flatten的类型.另外,为什么隐式参数不会出现在List.flatten的scaladoc中?