code: @SuppressWarnings("unchecked")
      public static <T> Optional<T> getAnnotationAttribute(final Annotation anno, final String attrName, final Class<T> attrType) {
          
          try {
              final Method method = anno.annotationType().getMethod(attrName);
              method.setAccessible(true);
              if(!attrType.equals(method.getReturnType())) {
                  return Optional.empty();
              }
              
              final Object value = method.invoke(anno);
              return Optional.of((T)value);
              
          } catch (Exception e) {
              return Optional.empty();
          }
          
      }
docs: アノテーションの指定した属性値を取得する。
  <p>アノテーションの修飾子はpublicである必要があります。</p>
  @param anno アノテーションのインスタンス
  @param attrName 属性名
  @param attrType 属性のタイプ。
  @return 属性を持たない場合、空を返す。