如何修复:派生自 <class> 的匿名 class 中的 java 方法与 java 方法冲突
How to fix: java method in Anonymous class derived from <class> clashes with java method
Android Studio 给了我一个“来自 [java class] 的匿名 class 中的 [java 方法] 与 [java 方法]”在以下代码的两个 "throws CertificateException" 部分。错误补充:"overridden method does not throw javax.security.cert.CertificateException"如何满足编译器?
坦率地说,我对理解此问题的一般原因和解决方案本身一样感兴趣。注意两条注释掉的行。我添加了它们以查看它是否可以防止错误,希望原因仅仅是没有代码实际抛出指定的异常。没用。
如果正确答案能够解释其确切原因,我将不胜感激(我不明白为什么这是 "anonymous class")。这个确切的代码在很多在线示例中使用,其中许多似乎以类似的方式使用它(参见 here)。
X509TrustManager trustManager = new X509TrustManager()
{
@Override
public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException
{
//if (authType == null)
// throw new javax.security.cert.CertificateException();
}
@Override
public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException
{
}
@Override
public java.security.cert.X509Certificate[] getAcceptedIssuers()
{
return new java.security.cert.X509Certificate[]{};
}
};
您不能抛出 CertificateException
,因为 X509TrustManager
中定义的方法会抛出 java.security.cert.CertificateException
,这与您尝试抛出的方法不同。
javax.security.cert.CertificateException
不同于 java.security.cert.CertificateException
。
Android Studio 给了我一个“来自 [java class] 的匿名 class 中的 [java 方法] 与 [java 方法]”在以下代码的两个 "throws CertificateException" 部分。错误补充:"overridden method does not throw javax.security.cert.CertificateException"如何满足编译器?
坦率地说,我对理解此问题的一般原因和解决方案本身一样感兴趣。注意两条注释掉的行。我添加了它们以查看它是否可以防止错误,希望原因仅仅是没有代码实际抛出指定的异常。没用。
如果正确答案能够解释其确切原因,我将不胜感激(我不明白为什么这是 "anonymous class")。这个确切的代码在很多在线示例中使用,其中许多似乎以类似的方式使用它(参见 here)。
X509TrustManager trustManager = new X509TrustManager()
{
@Override
public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException
{
//if (authType == null)
// throw new javax.security.cert.CertificateException();
}
@Override
public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException
{
}
@Override
public java.security.cert.X509Certificate[] getAcceptedIssuers()
{
return new java.security.cert.X509Certificate[]{};
}
};
您不能抛出 CertificateException
,因为 X509TrustManager
中定义的方法会抛出 java.security.cert.CertificateException
,这与您尝试抛出的方法不同。
javax.security.cert.CertificateException
不同于 java.security.cert.CertificateException
。