(JAVA)这段代码为什么可以强制转换为String类型?
@tcxu 你好,想跟你请教个问题:
代码如下:
package qi;
/**
*@ClassName : SystemInfo
*
*@Description:打印当前虚拟机的所有环境属性的变量和值
*
*@date :2014年4月4日下午6:26:03
*/
import java.util.Enumeration;
import java.util.Properties;
public class SystemInfo {
public static void main(String[] args) {
Properties sp = System.getProperties();// 获得当前虚拟机的环境属性
Enumeration e = sp.propertyNames();// 获得环境属性中所有的变量
// 循环打印出当前虚拟机的所有环境属性的变量和值
while (e.hasMoreElements()) {
String key = (String) e.nextElement();
// Properties的getProperty(String key):用指定的键在此属性列表中搜索属性,返回值是String类型的
System.out.println(key + " = " + sp.getProperty(key));
}
}
}
划红线处为什么可以强制转换为String类型?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
中国和山东,一个范围广,一个范围具体一点,
同样String相当于山东更加具体准确,而你取出来的结果是个范围广的信息,虽然也对,但是我们能用更具体的就用更具体的,也就是转换String
感觉都没说到重点。能转是因为 这个定义Enumeration e,相当于 Enumeration<Object> e,这样e.next()是Object类型的,当然能转String
因为知道内容是String
你这百度的可牛了
已知:Java System 类 的 成员方法 static Properties getProperties() 用来确定当前的系统属性。故从代码知:实体 sp, 是当前虚拟机 JVM (环境)属性。
属性是用字符串 String 类表示。比如,属性类 class Properties 的成员方法 String getProperty(String key) 就是用指定的字符串键在此属性列表中搜索属性(的值)。
属性的成员方法 Enumeration<?> propertyNames() 的功能是:返回属性列表中所有键的枚举,如果在主属性列表中未找到同名的键,则包括默认属性列表中不同的键。所以 执行代码:"Enumeration e = sp.propertyNames();" 就创建了一个枚举类的实体 e, 它保存了 属性列表中的所有的键。而每一个键,是用给定的一个字符串来表示的。
枚举类的方法 E nextElement() 的功能是:"如果此枚举对象至少还有一个可提供的元素,则返回此枚举的下一个元素"。 每次通过引用 e 调用方法 nextElement(), 即 "e.nextElement()", 将返回一个枚举类实体的元素,即属性列表中的一个键,一个用字符串表示的键。当然,可以用"强制转换的方式" 显示,这个键的名字是以字符串形式显示出来的。
顺便解释下一行的部分代码代码: sp.getProperty(key)。这是按照一个给定的键,返回(查询)对应属性的值。
因为key本来就是String,只是为了其他目的包装成其他类了吧,这种代码你可以不问为什么,一般是实现的人提供使用示例。实现的人这么设计代码了,你去问为什么是这样用还不如为什么这么设计。