开发者

Initializing static field in interface with exception handling

开发者 https://www.devze.com 2023-03-27 08:25 出处:网络
Well, in fact I would like to do the following in an interface: public interface ObjectMethods { static Method getModulus = RSAPublicKey.class.getMethod(\"setModulus\", byte[].class, short.class, sho

Well, in fact I would like to do the following in an interface:

public interface ObjectMethods
{
    static Method getModulus = RSAPublicKey.class.getMethod("setModulus", byte[].class, short.class, short.class);
}

This of course leads to a compile error cause the exception thrown by this method call is not handled properly. But I cannot put a static block into an interface. I thought about building an Enum, but maybe someone where already faced to this problem. In fact it would not be a opportunity to put this static field into a class beca开发者_JAVA百科use I have to use interface.

Thanks in advance.


You can handle this with a little bit of indirection. (Code is untested.)

public interface ObjectMethods
    {
        public static class CONSTANTS
        {
               static final Method getModulus ;
               static
               {
                     try
                     {
                           getModulus = RSAPublicKey.class.getMethod("setModulus", byte[].class, short.class, short.class);
                     }
                     catch ( Exception cause ) { //handle it }
              }
         }

    }


Could you create a static helper class that wraps the logic with a try/catch block that swallows the exception?

public static class ObjectMethodHelper
{
    public static Method getModulusMethod() {
        try {
            return RSAPublicKey.class.getMethod("setModulus", byte[].class, short.class, short.class);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
}

public interface ObjectMethods
{
    static Method getModulus = ObjectMethodHelper.getModulusMethod();
}
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号