作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我知道很多像这样的 Java 泛型问题已经存在,例如( How to refactor two Java methods into one? ),但我想我只需要用我自己的、更简单的函数来查看它 - 并提供一个如何调用它的示例,以完全理解java泛型...我提前道歉并感谢您!
我所知道的是,我可能需要使用instanceof和Class.forName来处理不同的返回类型(并且可能为desiredClass添加第二个参数,或者可以在不添加第二个参数的情况下以某种方式推断出这一点?)
public static <T> T getSanitizedURI(String theUrl, Class desiredReturnType) {
}
然后呢?
public static URI getSanitizedURI(String theUrl) {
URI sanitizedUri = null;
try{
URL url = new URL(theUrl);
sanitizedUri = new URI(url.getProtocol(), url.getUserInfo(), url.getHost(), url.getPort(), url.getPath(), url.getQuery(), url.getRef());
} catch(Exception e) {
e.printStackTrace();
}
return sanitizedUri;
}
public static String getSanitizedURIString(String theUrl) {
String sanitizedUrl = theUrl;
try{
URL url = new URL(theUrl);
URI uri = new URI(url.getProtocol(), url.getUserInfo(), url.getHost(), url.getPort(), url.getPath(), url.getQuery(), url.getRef());
sanitizedUrl = uri.toASCIIString();
} catch(Exception e) {
e.printStackTrace();
}
return sanitizedUrl;
}
最佳答案
在我看来,这对于泛型来说不是一个好的用例。如果用户想要一个String
,他们可以使用返回String
的方法。如果他们想要 URI
,他们可以使用返回 URI
的方法。如果在编写方法时无法确定该方法可用于的所有不同类型,或者该方法要用于许多不同类型,则泛型会更合适。
但是,您可以按如下方式减少代码重复
public static String getSanitizedURIString(String theUrl) {
return getSanitizedURI(theUrl).toASCIIString();
}
请注意,如果 getSanitizedURI
返回 null
,则会抛出 NullPointerException
。您可能更愿意以不同的方式处理这种情况,例如按照 @ViacheslavVedenin 的建议返回 theUrl
。
关于java - 如何使用泛型将这两种方法合二为一?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33977182/
我是一名优秀的程序员,十分优秀!