我正在編寫一個URL驗證器。代碼如下所示java.lang.ClassCastException:java.net.URI不能轉換爲java.net.URL
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;
}
在調試,我發現for (URL websiteURL : URLs)
是給java.lang.ClassCastException: java.net.URI cannot be cast to java.net.URL
錯誤。我怎樣才能讓自己的邏輯工作?
當我在列表類型中提供URL時,它爲什麼將它轉換爲URI?我如何將它強制爲URL對象。 – CoderGuy
1)它不會被轉換爲URI。它正被轉換爲「URL」。演員陣容正在發生>>因爲「您將列表類型聲明爲」列表「。 2)見我答案的最後一句。但是,您必須將'data'的未勾選轉換爲'List ',因爲這是有問題的。 –