如何修复:Anonymous类中的java方法派生自<class>与java方法的冲突

时间:2017-02-28 19:40:13

标签: java android x509certificate anonymous-class

Android Studio在以下代码的两个“throws CertificateException”部分中给我一个“[java方法]在[java class]与[java method]冲突的Anonymous类中”。错误添加:“重写方法不抛出javax.security.cert.CertificateException”如何满足编译器?

坦率地说,我同样有兴趣了解解决方案本身的一般原因。注意两条注释掉的行。我添加它们以查看它是否可以防止错误,希望原因只是没有代码实际抛出指定的异常。没用。

如果正确的答案可以解释这个的确切原因(我不知道这是一个“匿名类”),我会非常感激。这个确切的代码在很多在线示例中使用,其中许多似乎以类似的方式使用它(参见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[]{};
          }
        };

1 个答案:

答案 0 :(得分:2)

你不能抛出CertificateException,因为X509TrustManager中定义的方法会抛出java.security.cert.CertificateException,这与你想要抛出的方法不同。

javax.security.cert.CertificateExceptionjava.security.cert.CertificateException不同。