小编Gil*_*ili的帖子

如何将值映射回枚举?

给定枚举,其中每个实例都与某个值相关联:

public enum SQLState
{
  SUCCESSFUL_COMPLETION("00000"),
  WARNING("01000");

  private final String code;
  SQLState(String code)
  {
    this.code = code;
  }
}
Run Code Online (Sandbox Code Playgroud)

如何构建Map以进行有效的反向查找?我尝试了以下方法:

public enum SQLState
{
  SUCCESSFUL_COMPLETION("00000"),
  WARNING("01000");

  private final String code;
  private static final Map<String, SQLState> codeToValue = Maps.newHashMap();
  SQLState(String code)
  {
    this.code = code;
    codeToValue.put(code, this); // problematic line
  }
}
Run Code Online (Sandbox Code Playgroud)

但Java抱怨道:Illegal reference to static field from initializer.也就是说,静态Map 所有枚举值之后被初始化,因此您无法从构造函数中引用它.有任何想法吗?

java enums guava

10
推荐指数
1
解决办法
597
查看次数

自动填充显示焦点上的所有选项

我使用这个插件.

当获得焦点时,如何显示输入字段下拉列表中的所有可用选项?现在,我必须为插件键入一些内容来过滤选项.

我现在有什么

var $sessionTimes = "00:00 00:15 00:30 00:45 1:00 1:15".split(" ");
$(".autocompleteTime").autocomplete($sessionTimes);

<input type="text" class="autocompleteTime" size="5" />
Run Code Online (Sandbox Code Playgroud)

jquery jquery-plugins

9
推荐指数
3
解决办法
2万
查看次数

Maven:如何在Mojos之间传递参数?

如何编写一个Mojo来设置另一个Mojo的配置?例如:Mojo A需要A.foo定义配置参数.用户可以A.foo手动指定或运行插件B,它将计算他/她的值.

maven-2 maven-plugin

9
推荐指数
1
解决办法
3484
查看次数

如何移动REST资源?

我正在尝试将资源从以下/buckets/1方式移动到/buckets/2:

初始状态

  • / buckets/1 = foo
  • / buckets/2 = HTTP 404

最终状态

  • / buckets/1 = HTTP 301到/ buckets/2
  • / buckets/2 = foo

什么是RESTful方式要求服务器以这种方式移动资源?

rest

9
推荐指数
1
解决办法
5342
查看次数

如何将()值放入Guava的Cache类中?

我对Guava 10中引入的CacheBuilderCache感到有些困惑.文档暗示可以覆盖值,但据我所知,Cache不包含任何方法.有任何想法吗?

我正在尝试构建一个Map,它在上次读取或写入后10秒钟到期.当查找一个值时,我希望返回先前设置的值,或者如果不存在则计算默认值.

注意:这个问题已经过时了.虽然上面的Javadoc显示了Cache.put(K key, V value)方法的存在,但在首次发布问题时它不存在.

java guava

9
推荐指数
1
解决办法
3557
查看次数

SonarRunner找不到sonar.projectKey,sonar.projectName,sonar.projectVersion,sonar.sources

我试图让Jenkins在构建后的步骤中运行Sonar.

Jenkins运行SonarRunner [1],但这失败了:

ERROR: Error during Sonar runner execution
ERROR: Unable to execute Sonar
ERROR: Caused by: You must define the following mandatory properties for 'Unknown': sonar.projectKey, sonar.projectName, sonar.projectVersion, sonar.sources
Run Code Online (Sandbox Code Playgroud)

如果我运行mvn sonar:sonar[2]而不是它工作正常.听起来好像SonarRunner忽略了pom.xml.如何让SonarRunner从Maven获取这些属性?


[1] /Users/builds/.jenkins/tools/hudson.plugins.sonar.SonarRunnerInstallation/Default_Sonar_Runner/bin/sonar-runner -Dsonar.jdbc.url=jdbc:h2:tcp://myServer:1009/sonar -Dsonar.host.url=http://myServer/sonar/ -Dsonar.projectBaseDir=/Users/builds/.jenkins/workspace/myProject

[2] mvn sonar:sonar -Dsonar.jdbc.url=jdbc:h2:tcp://myServer:1009/sonar -Dsonar.host.url=http://myServer/sonar/ -Dsonar.projectBaseDir=/Users/builds/.jenkins/workspace/myProject

maven jenkins sonarqube

9
推荐指数
1
解决办法
2万
查看次数

如何抑制“未知枚举常量”警告?

java.lang.annotation.ElementType.TYPE_USEJDK8 中添加的Checkers Framework引用。当我在JDK7下使用它时,我收到以下警告:

unknown enum constant java.lang.annotation.ElementType.TYPE_USE

这是一个合理的警告,但是对于我认为无害的情况如何抑制它

java annotations javac checker-framework

9
推荐指数
1
解决办法
3万
查看次数

为什么Function.identity()会破坏类型依赖,但t - > t不会?

Java 8 lambdas,Function.identity()或t-> t中找到的答案似乎暗示Function.identity()几乎总是等同于t -> t.然而,在测试用例看出下面,取代t -> tFunction.identity()编译错误的结果.这是为什么?

public class Testcase {

    public static <T, A, R, K, V> Collector<T, A, R> comparatorOrdering(
            Function<? super T, ? extends K> keyMapper,
            Function<? super T, ? extends V> valueMapper,
            Comparator<? super K> keyComparator,
            Comparator<? super V> valueComparator) {
        return null;
    }

    public static void main(String[] args) {    
        Map<Integer, String> case1 = Stream.of(1, 2, 3).
                collect(comparatorOrdering(t -> t, t -> String.valueOf(t),
                        Comparator.naturalOrder(), Comparator.naturalOrder())); …
Run Code Online (Sandbox Code Playgroud)

java generics reification

9
推荐指数
1
解决办法
1065
查看次数

如何创建异步堆栈跟踪?

更新:Intellij IDEA的最新版本实现了我正在寻找的东西.问题是如何在IDE之外实现这一点(因此我可以将异步堆栈跟踪转储到日志文件中),理想情况下不使用检测代理.


自从我将应用程序从同步模型转换为异步模型后,我遇到了调试失败的问题.

当我使用同步API时,我总是在异常堆栈跟踪中找到我的类,所以我知道从哪里开始查找是否出错.使用异步API,我得到的堆栈跟踪不会引用我的类,也不会指示哪个请求触发了失败.

我将给你一个具体的例子,但我对这类问题的一般解决方案感兴趣.

具体例子

我使用Jersey发出HTTP请求:

new Client().target("http://test.com/").request().rx().get(JsonNode.class);
Run Code Online (Sandbox Code Playgroud)

where rx()表示请求应异步发生,CompletionStage<JsonNode>而不是JsonNode直接返回.如果此调用失败,我会得到这个堆栈跟踪:

javax.ws.rs.ForbiddenException: HTTP 403 Authentication Failed
    at org.glassfish.jersey.client.JerseyInvocation.convertToException(JerseyInvocation.java:1083)
    at org.glassfish.jersey.client.JerseyInvocation.translate(JerseyInvocation.java:883)
    at org.glassfish.jersey.client.JerseyInvocation.lambda$invoke$1(JerseyInvocation.java:767)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:316)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:298)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:229)
    at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:414)
    at org.glassfish.jersey.client.JerseyInvocation.invoke(JerseyInvocation.java:765)
    at org.glassfish.jersey.client.JerseyInvocation$Builder.method(JerseyInvocation.java:456)
    at org.glassfish.jersey.client.JerseyCompletionStageRxInvoker.lambda$method$1(JerseyCompletionStageRxInvoker.java:70)
    at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1590)
Run Code Online (Sandbox Code Playgroud)

注意:

  • 堆栈跟踪不引用用户代码.
  • 异常消息不包含有关触发错误的HTTP请求的上下文信息(HTTP方法,URI等).

因此,我无法将异常追溯到其来源.

为什么会这样

如果你在引擎盖下挖掘,你会发现泽西岛正在调用:

CompletableFuture.supplyAsync(() -> getSyncInvoker().method(name, entity, responseType))
Run Code Online (Sandbox Code Playgroud)

对于rx()调用.因为供应商是由泽西岛建造的,所以没有参考用户代码.

我试过的

我试图针对一个无关的异步示例提交针对Jetty 的错误报告,随后因安全原因被拒绝.

相反,我一直在添加上下文信息如下:

makeHttpRequest().exceptionally(e ->
{
    throw new RuntimeException(e);
});
Run Code Online (Sandbox Code Playgroud)

意思是,我 …

java debugging asynchronous completable-future

9
推荐指数
1
解决办法
846
查看次数

何时使用CompletableFuture的非异步方法?

我(大多数)理解CompletableFuture的三种执行方法:

  • 非异步(同步执行)
  • default async(使用默认执行程序异步)
  • 自定义异步(使用自定义执行程序进行异步)

我的问题是:何时应该支持使用非异步方法?

如果你有一个代码块调用其他方法也返回CompletableFutures会发生什么?从表面上看,这可能看起来很便宜,但如果这些方法也使用非异步调用会发生什么?这不是一个长的非异步块加起来可能会变得昂贵吗?

是否应该将非异步执行的使用限制为不调用其他方法的简短定义的代码块?

java completable-future

9
推荐指数
1
解决办法
742
查看次数