小编Hel*_*ira的帖子

杰克逊基于场的序列化

我认为杰克逊基于方法的序列化,有什么方法可以让它基于字段?

例如:

class Bean {
    Integer i;
    String s;

    public Integer getI() { return this.i; }
    public void setI(Integer i) { this.i = i; }
    public bool isSetI() { return this.i != null; }

    // same for s as well
}
Run Code Online (Sandbox Code Playgroud)

输出JSON具有"i"和"setI".无论如何我可以覆盖这个只获得"我"?如果有一种方法可以在不向类中添加任何注释(它们是自动生成的)的情况下也会很棒.

java json jackson

7
推荐指数
3
解决办法
9946
查看次数

找不到API包'urlfetch'或调用'Fetch()'

我是Google App Engine(GAE)和Glassware开发(Google Glass)的新手.

我配置了mirror-quickstart-java项目,Netbeans并且Apache tomcat我成功运行了该项目,但我遇到了麻烦.

我的要求是,我不想使用谷歌应用程序引擎来开发我自己的Glassware,因为我想使用很少的第三方API.app引擎也不支持javax.imageioBufferedImageapis.

我有以下问题

  1. 是否必须使用Google app-engine进行mirror-quickstart-java/Glassware开发?
  2. 如果没有,我在交换访问令牌时"允许访问"步骤后收到以下错误.
message The API package 'urlfetch' or call 'Fetch()' was not found.

description The server encountered an internal error that prevented it from fulfilling this request.

com.google.apphosting.api.ApiProxy$CallNotFoundException: The API package 'urlfetch' or call 'Fetch()' was not found.
    com.google.apphosting.api.ApiProxy.makeSyncCall(ApiProxy.java:100)
    com.google.appengine.api.urlfetch.URLFetchServiceImpl.fetch(URLFetchServiceImpl.java:38)
    com.google.api.client.extensions.appengine.http.UrlFetchRequest.execute(UrlFetchRequest.java:75)
    com.google.api.client.http.HttpRequest.execute(HttpRequest.java:980)
    com.google.api.client.auth.oauth2.TokenRequest.executeUnparsed(TokenRequest.java:299)
    com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeTokenRequest.execute(GoogleAuthorizationCodeTokenRequest.java:175)
    com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeTokenRequest.execute(GoogleAuthorizationCodeTokenRequest.java:78)
    com.google.glassware.AuthServlet.doGet(AuthServlet.java:56)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
Run Code Online (Sandbox Code Playgroud)

google-app-engine google-glass google-mirror-api

7
推荐指数
1
解决办法
2551
查看次数

Java Streams - 过滤先前过滤的值

我正在尝试使用Java的Streams,并试图找出可能的内容以及它们的优点和缺点.目前我正在尝试使用流来实现Eratosthenes的Sieve,但似乎找不到循环使用先前过滤的值而不将它们存储在单独的集合中的好方法.

我想要完成这样的事情:

IntStream myStream = IntStream.range(0,3);
myStream.filter(s -> {
    System.out.print("[filtering "+s+"] ");
    myStream.forEach(q -> System.out.print(q+", "));
    System.out.println();
    return true; //eventually respond to values observed on the line above
});
Run Code Online (Sandbox Code Playgroud)

具有所需的输出:

[filtering 0] 
[filtering 1] 0, 
[filtering 2] 0, 1, 
[filtering 3] 0, 1, 2, 
Run Code Online (Sandbox Code Playgroud)

请注意,在过滤每个新值时,会观察到所有先前过滤的值.这样可以轻松实现Eratosthenes的Sieve,因为我可以过滤掉所有非素数值,并且每个新值都可以检查以前通过素数过滤器的所有数字的可分性.

但是,上面的示例在NetBeans中给出了一个错误:

local variables referenced from a lambda expression must be final or effectively final
Run Code Online (Sandbox Code Playgroud)

这似乎是因为我在已经作用于myStream的过滤器中引用了myStream.是否有任何解决此错误的好方法(即,制作仅包含到目前为止已过滤的值的流的最终副本),或者是否有更好的方法解决此类问题而不使用单独的集合来存储值?

java lambda filter java-8 java-stream

7
推荐指数
1
解决办法
1025
查看次数

修改现有的 gradle 任务

apply plugin: 'java'在摇篮,它定义了其他任务processResources。我想在processResources. 我在我的中定义了以下复制任务build.gradle

import org.apache.tools.ant.filters.ReplaceTokens                                                                                                                                                                                         

task initConfig(type: Copy) {                                                                                                                                                                                                             
    from("src/resources/assets/js") {                                                                                                                                                                                                     
        include 'config.js'                                                                                                                                                                                                               
        filter(ReplaceTokens, tokens: [host: "${System.env.HOST ?: 'localhost:58080'}" as String])                                                                                                                                        
    }                                                                                                                                                                                                                                     
    into "$sourceSets.main.output.resourcesDir/assets/js"                                                                                                                                                                                 
}   
Run Code Online (Sandbox Code Playgroud)

如果我运行它工作正常gradle -q run initConfig。我想要的是这个任务作为processResources任务的一部分运行,我试图把相同的逻辑如下:

processResources << {
    // same code goes here
}
Run Code Online (Sandbox Code Playgroud)

或者

processResources {
    doLast {
        // same code goes here
    }
}
Run Code Online (Sandbox Code Playgroud)

它们都不起作用。所以,如果运行gradle -q clean processResources资源被复制,但令牌没有被替换。

我不想initConfig在运行构建时强制显式运行/添加,所以理想情况下gradle -q build应该做所有必要的事情。

我相信这是可能的,因为build任务本身定义了在执行期间运行多个任务的方式。还没有找到如何。

java gradle build.gradle

7
推荐指数
1
解决办法
7021
查看次数

将字符串"AABSSSD"转换为"2AB3SD"

请帮帮我,我想transfrom字符串AABSSSD2AB3SD(有人叫它是加密).这是我解决它的方式:

public class TransformString {

    public static void main(String[] args) {
        String str = "AABSSSD";
        StringBuilder newStr = new StringBuilder("");
        char temp = str.charAt(0);
        int count = 0;
        for (int i = 0; i < str.length(); i++) {
            if (temp == str.charAt(i)) {
                count++;
            } else {
                newStr.append(count);
                newStr.append(temp);
                count = 0;
            }
            temp = str.charAt(i);
            if(i == (str.length() - 1)){
                newStr.append(str.charAt(i));
            }
        }
        String x = String.valueOf(newStr);
        x = x.replace("0", "");
        System.out.print(x);
    }
}
Run Code Online (Sandbox Code Playgroud)

但输出是, …

java string

6
推荐指数
1
解决办法
90
查看次数

静态和非静态方法在一个具有相同名称JAVA的类中

我知道在一个类中覆盖一个方法是不可能的.但有没有办法使用非静态方法作为静态?例如,我有一个添加数字的方法.我希望这个方法对一个对象有用,也没有它.是否可以在不创建其他方法的情况下执行此类操作?

编辑:我的意思是,如果我使一个方法静态,我将需要它来获取参数,如果我创建一个已经设置变量的对象,再次使用相同的参数调用我的对象上的函数会非常不舒服.

public class Test {

    private int a;
    private int b;
    private int c;

    public Test(int a,int b,int c)
    {
        this.a = a;
        this.b = b;
        this.c = c;
    }

    public static String count(int a1,int b1, int c1)
    {        
        String solution;
        solution = Integer.toString(a1+b1+c1);
        return solution;
    }


    public static void main(String[] args) {

       System.out.println(Test.count(1,2,3));
       Test t1 = new Test(1,2,3);
       t1.count();
    }

}
Run Code Online (Sandbox Code Playgroud)

我知道代码不正确,但我想展示我想做的事情.

java static

6
推荐指数
2
解决办法
4939
查看次数

纯函数随机数发生器 - 状态monad

" Scala中功能编程 "一书演示了如下的纯函数随机数生成器的示例

trait RNG {
    def nextInt: (Int, RNG)
}

object RNG {
    def simple(seed: Long): RNG = new RNG {
        def nextInt = {
            val seed2 = (seed*0x5DEECE66DL + 0xBL) &
                        ((1L << 48) - 1)
            ((seed2 >>> 16).asInstanceOf[Int],
             simple(seed2))
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

用法看起来像

val (randomNumber,nextState) = rng.nextInt
Run Code Online (Sandbox Code Playgroud)

我确实得到了它是纯函数的部分,因为它返回下一个状态并将其留在API客户端上,以便nextInt在下次需要随机数时使用它来调用但我不明白的是' 第一个随机怎么样生成数字,因为我们必须seed至少提供一次.

如果有另一个功能提升seed得到RNG?如果是这样,那么我们如何期望这个API的客户端知道它(因为在非功能实现中用户只是调用nextInt并且状态由API维护)

有人可以给出Scala中纯函数随机数生成器的完整示例,并且可能将它与状态Monad关联起来.

monads functional-programming scala state-monad

6
推荐指数
2
解决办法
2478
查看次数

嘲弄Couchbase

我有一个基于Java的数据访问层,可以与Couchbase进行交互.为了将单元测试应用于该层,我想模拟Couchbase.

浏览网络我遇到了这个项目,它也在GitHub托管.我想用它,但遗漏了一些基本的例子.

也许有人之前尝试过,可以为我提供一些Java的基本用法?

java mocking couchbase

5
推荐指数
1
解决办法
3448
查看次数

System.getenv()方法 - 是否已弃用?

许多地方都建议不推荐使用System.getenv()JDK方法.许多地方都表示它已经恢复.

是否有更好的API提供在后续JDK中获取环境设置的功能?

或者System.getenv()仍然是获取环境变量/属性的首选方法?

java system environment-variables

5
推荐指数
2
解决办法
1148
查看次数

Java 8中的PriorityBlockingQueue流无序

这两段代码具有不同的输出顺序.第一件:

while(!jobQueue.isEmpty()) {
    TimeoutJobRequest job = jobQueue.peek();
    if(job.isReady()) {
        execute(job);
        jobQueue.poll();
    } else {
        return;
    }
}
Run Code Online (Sandbox Code Playgroud)

第二件:

jobQueue.stream()
        .filter(TimeoutJobRequest::isReady)
        .peek(jobQueue::remove)
        .forEach(this::execute);
Run Code Online (Sandbox Code Playgroud)

请注意,这jobQueue是一个PriorityBlockingQueue.

重新排序仅在this::execute相对较长时(例如几秒钟)发生.

java priority-queue java-8 java-stream

5
推荐指数
2
解决办法
884
查看次数