以下语句创建URL类的实例,将其填入“url”变量并将第一个参数(http://www.stackoverflow.com)填充到非静态属性中:
URL url = new URL("http://www.stackoverflow.com");
当你真的应该指向get-method来获取属性而不是直接指向实例引用时,如何使用以下语句获取属性值?:
1什么是可能的,但(也许)不应该是:
String urlstr = url.toString();
2它应该如何:
String urlstr = url.getUrl();
答案 0 :(得分:2)
String urlstr = url.toString();
如果您查看网址的源代码,您会看到toString()
方法在{{protocol
,authority
,path
,query
中附加StringBuffer
方法1}}并返回String
表示。
这绝不意味着您可以通过调用toString()
来访问任何媒体资源,如果要访问说path
属性,您必须致电getPath
,toString
只是给出出于人类可读的格式,在这种情况下看起来就像你传递的初始化参数。
一般来说,toString
通常用于调试目的,您可以在其中提供一些人类可读信息,默认toString()
只会为您提供带有哈希码的className。
答案 1 :(得分:1)
你可能很困惑,因为你做了一个实例的println,它看起来像属性。
原因是println(或字符串连接)调用URL的toString方法,在这种特定情况下,它会重构您期望的URL。
答案 2 :(得分:0)
从技术上讲,当你做一个System.out.println(a); a的toString()方法被调用...我说这是可能的,就像它可以做自动拳击一样。我很遗憾从未使用过这种方法,但至少你知道它是可行的。
答案 3 :(得分:0)
这里toString正在做魔术。我不确定这里是否可以进行隐式类型转换,但如果查看URL的toString方法,您会发现它正在打印此对象指向的 URL 。