小编wen*_*ner的帖子

为什么不链接java.util.stream.Stream#forEach

在java 8中,java.util.stream.Stream#forEach考虑作为传统for循环的替代.但为什么不是这不是链函数.它返回虚空而不是Stream<T>自我.

像这样

Arrays
    .stream(Girls.toArray())
    .forEach(Girls::getUp)
    .forEach(Girls::dressUp)
    .filter(/* Top 10 Girls */)
    .forEach(Gay.getMe()::gotGirl)
    .endFilter()// Not an API, but it means remove last filter
    .filter(/* Worst 10 Girls */)
    .forEach(Gay.get(0)::gotGirl)


girls = Arrays
    .stream(Girls.toArray());
girls.forEach(g->{g.getUp();g.dressUp()});
girls.filter(/* Top 10 Girls */)
    .forEach(Gay.getMe()::gotGirl);
girls.filter(/* Worst 10 Girls */)
    .forEach(Gay.get(0)::gotGirl);
Run Code Online (Sandbox Code Playgroud)

第一个比第二个好.但是第一个表现更差.

那么,为什么forEach不能连锁?

java java-8

9
推荐指数
4
解决办法
4087
查看次数

BeanUtils不适用于链设置器

例如

class tester
{
    @Test
    public void testBeanUtils() throws InvocationTargetException, IllegalAccessException, NoSuchMethodException
    {
        Stranger stranger = new Stranger();
        BeanUtils.setProperty(stranger,"name","wener");
        BeanUtils.setProperty(stranger,"xname","xwener");
        BeanUtils.setProperty(stranger,"yname","ywener");

        System.out.println(stranger);
    }
    @Data// lombok annotation generate all setter and getter
    public static class Stranger
    {
        @Accessors(chain = true)// generate chained setter
        String name;
        String xname;
        String yname;

        public Stranger setYname(String yname)// no lombok, still not work
        {
            this.yname = yname;
            return this;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我的输出:

TestValues.Stranger(name=null, xname=xwener, yname=null)
Run Code Online (Sandbox Code Playgroud)

这有什么问题?连锁二传手是一件好事.有什么建议?

编辑

再次回到这个问题.这次我无法删除Accessors chain.现在,我commons-lang3用来实现.

// force …
Run Code Online (Sandbox Code Playgroud)

java reflection chaining lombok apache-commons-beanutils

8
推荐指数
2
解决办法
1735
查看次数

对于 Jackson,如何安全地共享 ObjectMapper ?有没有不可变的ObjectMapper?

Mapper实例是完全线程安全的,不需要创建单独使用的mapper,但mapper的配置可以更改。

虽然ObjectMapper具有复制功能,可以根据现有的映射器复制自定义配置,但如果我共享一个映射器,则不能保证当有人想要自定义映射器时,他们会复制共享的映射器。所以我想要一个不可变的映射器来共享,如果有人不小心更改了共享映射器,则应该抛出一些异常。

有这样的事吗?

java json jackson jackson-databind

8
推荐指数
1
解决办法
3084
查看次数

Guice动态注入自定义注释

我有一些资源,但我不能迭代它并将它们全部绑定,我必须使用密钥来请求资源.所以,我必须动态注入.

我定义了一个注释

@Target({ METHOD, CONSTRUCTOR, FIELD })
@Retention(RUNTIME)
@Documented
@BindingAnnotation
public @interface Res
{
    String value();// the key of the resource
}
Run Code Online (Sandbox Code Playgroud)

像这样用

public class Test
{
    @Inject
    @Res("author.name")
    String name;
    @Inject
    @Res("author.age")
    int age;
    @Inject
    @Res("author.blog")
    Uri blog;
}
Run Code Online (Sandbox Code Playgroud)

我必须处理注释注入@Res,我需要知道注入字段和注释.

这有可能Guice吗?如何?即使是spi?

java inject inversion-of-control guice

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

为什么IDEA和Chrome之间的Unicode组合字符顺序不同?

在Java中,我正在生成一个带字母的字符串,A且字符串之间带有B一个COMBINING OVERLINE U + 0305字符。

@Test
public void test() {
  System.out.println("A\u0305B");
}
Run Code Online (Sandbox Code Playgroud)

我在IDEA中得到这个:

在此处输入图片说明

但是,如果我复制到此处,它将变为A?B


这是来自Chrome控制台的:

在此处输入图片说明

组合字符的组合顺序使我感到困惑。哪一个是正确的?

我写在科特林编译到运行JavaScript在浏览器中。在IDEA中进行调试是正确的,但浏览器显示了不同的答案。

javascript java unicode google-chrome intellij-idea

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

display:none不适用于选项

在这里演示

HTML:

display:none <b>not works</b>,the hidden can <b>not select</b>.<br>
<select size="5">
    <option value="A">A</option>
    <option value="B">B</option>
    <option value="C">C</option>
    <option value="D">D</option>
    <option value="E">E</option>
    <option value="F">F</option>
    <option value="G">G</option>
    <option value="H">H</option>
    <option value="I">I</option>
</select><br>

display:none <b>works</b>,the hidden <b>can select</b>.<br>
<select>
    <option value="A">A</option>
    <option value="B">B</option>
    <option value="C">C</option>
    <option value="D">D</option>
    <option value="E">E</option>
    <option value="F">F</option>
    <option value="G">G</option>
    <option value="H">H</option>
    <option value="I">I</option>
</select>
Run Code Online (Sandbox Code Playgroud)

CSS:

select{width:50px;}

[value=C]{
    display: none;
}
/* will hold the position */ 
[value=B]{
    visibility: hidden;
}
Run Code Online (Sandbox Code Playgroud)

size属性会影响显示和可见性,这会发生什么?

如何在select中隐藏具有size属性的选项?

html css html5 css3

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

为什么SpEL不支持unicode变量?如何解决?

代码优先

@Test
public void tryUnicode()
{
    SpelExpressionParser parser = new SpelExpressionParser();
    Object rootObject = new Object()
    {
        public String getName()
        {
            return "wener";
        }

        public String get??()
        {
            return getName();
        }
    };
    // ok
    assert parser.parseExpression("name").getValue(rootObject).equals("wener");
    // not ok
    assert parser.parseExpression("??").getValue(rootObject).equals("wener");
}
Run Code Online (Sandbox Code Playgroud)

有些时候我们只需要一个unicode名称,它对我们的自定义模板更友好.SpEL简单,易用且内置,我不想使用其他EL解决方案,我该如何解决这个问题?

编辑

org.springframework.expression.spel.standard.Tokenizer#isIdentifier,他们只接受isAlphabetic(ch) || isDigit(ch) || ch == '_' || ch == '$';没有unicode支持,但java标识符允许unicode,悲伤.

java unicode spring el spring-el

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

如何将字符串拆分为shell之类的参数?

是一个参数解析器列表,但它们接受字符串数组.

现在,我有一个字符串

-s -d "String with space" -d "string with \" escape \n the next line"
Run Code Online (Sandbox Code Playgroud)

我想将字符串拆分为

-s
-d
String with space
-d
string with " escape
the next line (This is one string with \n)
Run Code Online (Sandbox Code Playgroud)

有没有工具可以做到这一点?

也可以看看

EDTIED

张贴作为答案.

java regex string args4j

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

如何运行或使用多个注册表镜像?

我知道如何运行注册表镜像

docker run -p 5000:5000 \
    -e STANDALONE=false \
    -e MIRROR_SOURCE=https://registry-1.docker.io \
    -e MIRROR_SOURCE_INDEX=https://index.docker.io \
    registry
Run Code Online (Sandbox Code Playgroud)

以及如何使用它

docker --registry-mirror=http://10.0.0.2:5000 -d
Run Code Online (Sandbox Code Playgroud)

但是我怎样才能使用多个注册表镜像.

这就是我需要的:

所以我必须制作两个注册表镜像和一个私有注册表.我想docker run registry镜像第一和第二个注册表,还有一个docker run registry持有我的私人注册表.客户端将使用其中三个注册表.

我不知道如何做到这一点,我认为这是一个常见的用例,请帮助,谢谢.

linux docker kubernetes dockerhub docker-registry

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

JavaCC可以通过其上下文区分令牌吗?

基本要求是使用关键字作为标识符,所以我想区分令牌和它的上下文.(例如,class是一个关键字,但我们允许一个名为的变量class).

在Java中,这是可能的,但它是如此艰难,这里就是我如何做到这一点

TOKEN :
{
    <I_CAL:     "CAL">  : DO_CAL
    | <I_CALL:  "CALL">
    | <I_CMP:   "CMP">
    | <I_EXIT:  "EXIT">
    | <I_IN:    "IN">
    | <I_JMP:   "JMP">
    | <I_JPC:   "JPC">  : NEED_CMP_OP
    | <I_LD:    "LD">   : NEED_DATA_TYPE
    | <I_NOP:   "NOP">
    | <I_OUT:   "OUT">
    | <I_POP:   "POP">
    | <I_PUSH:  "PUSH">
    | <I_RET:   "RET">
    | <I_DATA:  "DATA"> : DO_DATA
    | <I_BLOCK:  ".BLOCK">
}

// T prefix for Token
TOKEN :
{
    <T_REGISTER : "R0" | "R1" | "R2" | …
Run Code Online (Sandbox Code Playgroud)

java compiler-construction javacc token

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