java.lang.ClassCastException:java.net.URI不能强制转换为java.net.URL
我正在编写一个URL验证程序。代码如下java.lang.ClassCastException:java.net.URI不能强制转换为java.net.URL,java,casting,classcastexception,Java,Casting,Classcastexception,我正在编写一个URL验证程序。代码如下 public ValidationResult validate(final Object data, final Object root, final String path, final ValidationContext validationContext, final EvaluationContext evaluationContext) { ValidationResult validationResult = new Validat
public ValidationResult validate(final Object data, final Object root, final String path, final ValidationContext validationContext, final EvaluationContext evaluationContext) {
ValidationResult validationResult = new ValidationResult();
@SuppressWarnings("unchecked")
List<URL> URLs = (List<URL>)data;
UrlValidator urlValidator = new UrlValidator();
boolean isValid = true;
for (URL websiteURL : URLs) {
if (urlValidator.isValid(websiteURL.getPath())) {
isValid = true;
} else {
isValid = false;
break;
}
System.out.println("websiteURL.getPath() " + websiteURL.getPath());
}
System.out.println("websiteURL.getPath() " + isValid);
return validationResult;
}
公共验证结果验证(最终对象数据、最终对象根、最终字符串路径、最终验证上下文验证上下文、最终评估上下文评估上下文){
ValidationResult ValidationResult=新的ValidationResult();
@抑制警告(“未选中”)
列表URL=(列表)数据;
UrlValidator UrlValidator=新的UrlValidator();
布尔值isValid=true;
用于(URL网站URL:URL){
if(urlvalidater.isValid(websiteURL.getPath())){
isValid=true;
}否则{
isValid=false;
打破
}
System.out.println(“websiteURL.getPath()”+websiteURL.getPath());
}
System.out.println(“websiteURL.getPath()”+isValid);
返回验证结果;
}
调试时,我发现
for(URL-websiteURL:URL)
给出了java.lang.ClassCastException:java.net.URI无法转换为java.net.URL
错误。我如何才能使我的逻辑工作?真正的问题在于:
@SuppressWarnings("unchecked")
List<URL> URLs = (List<URL>)data;
URL
和URI
对象。。。首先将上述声明更改为:
List<?> urls = (List) data;
List url=(List)数据;
然后,您需要使用instanceof
来区分URI
和URL
对象,然后再验证它们对于记录,将
URI
转换为URL
的方法是在其上调用URI.toURL()
。当我在列表类型中提供URL时,它为什么要将其转换为URI?如何将其强制为URL对象。1)未将其强制转换为URI
。正在将其转换为URL
。演员阵容正在发生>>因为
List<?> urls = (List) data;