重命名openconnection()还是将其切断?
是否可以重命名openconnection()?
原单:
URL url = new URL("http://google.co.in"); URLConnection connection = url.**openConnection**();
后:
URL url = new URL("http://google.co.in"); URLConnection connection = url.**connect**();
我只是想知道它是否可能以及我将如何去做。 还有其他选择吗? 为了做到这一点,我正在考虑上课,但我不能100%确定是否可行。
原单:
URL url = new URL("http://google.co.in"); URLConnection connection = url.**openConnection**();
后:
string st1 = "open"; string st2 = "Connection"; URL url = new URL("http://google.co.in"); URLConnection connection = url.**st1 + st2**();
当我把它变成一个字符串时,我得到一个错误,但我不确定如何将它结合起来来定义它。 如果那样的话,那我在使用Java编码方面有点生气。
用一大袋盐来回答这个问题。 这可以工作,但除非你对Java非常熟悉,否则你通常不希望反思。
你可以用reflection完成#2,忽略你必须处理的各种令人讨厌的exception:
String st1 = "open"; String st2 = "Connection"; URL url = new URL("http://google.co.in"); Object obj = url.getClass().getMethod(st1 + st2).invoke(url); URLConnection connection = (URLConnection) obj;
看到:
-
Object#getClass()
-
Class#getMethod(String, Class...)
-
Method#invoke(Object, Object...)
从一行代码中您可能需要以某种方式处理的潜在exception:
-
NoSuchMethodException
-
SecurityException
-
IllegalAccessException
-
IllegalArgumentException
-
InvocationTargetException
不过,我不确定你为什么要这样做。 几乎可以肯定有更好的方法来实现相同的最终结果。 你想要解决的更大问题是什么?
对于第一部分,您不能直接这样做。 您不能从URL
派生,因为它是最终的,因此您必须编写代理类,这将浪费时间并可能引入错误。
对于第二个,您可以使用reflection来做到这一点。 这不是一件轻而易举的事,这是一个高级话题。 所以我会避免这种情况,直到你对Java语言非常熟悉。
如果你解释了你想要实现的目标,也许你会得到更好的建议。