URL变量“包含”字符串,但应包含对URL实例的引用

时间:2012-06-11 08:52:51

标签: java

以下语句创建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();

4 个答案:

答案 0 :(得分:2)

String urlstr = url.toString();

如果您查看网址的源代码,您会看到toString()方法在{{protocolauthoritypathquery中附加StringBuffer方法1}}并返回String表示。

这绝不意味着您可以通过调用toString()来访问任何媒体资源,如果要访问说path属性,您必须致电getPathtoString只是给出出于人类可读的格式,在这种情况下看起来就像你传递的初始化参数。

一般来说,toString通常用于调试目的,您可以在其中提供一些人类可读信息,默认toString()只会为您提供带有哈希码的className。

答案 1 :(得分:1)

你可能很困惑,因为你做了一个实例的println,它看起来像属性。

原因是println(或字符串连接)调用URL的toString方法,在这种特定情况下,它会重构您期望的URL。

答案 2 :(得分:0)

从技术上讲,当你做一个System.out.println(a); a的toString()方法被调用...我说这是可能的,就像它可以做自动拳击一样。我很遗憾从未使用过这种方法,但至少你知道它是可行的。

答案 3 :(得分:0)

这里toString正在做魔术。我不确定这里是否可以进行隐式类型转换,但如果查看URL的toString方法,您会发现它正在打印此对象指向的 URL