小编tom*_*maj的帖子

将java.util.function.Function转换为Interface

在这个(简化的)示例中,我可以MyInterface通过使用方法引用来创建我的对象apply,但是直接转换不起作用.

@Test
public void testInterfaceCast(){
    Function<String, Integer> func = Integer::parseInt;

    MyInterface legal = func::apply; // works
    MyInterface illegal = func; // error
}

public interface MyInterface extends Function<String, Integer>{}
Run Code Online (Sandbox Code Playgroud)

第二个赋值给出了编译器错误:

incompatible types: Function<String,Integer> cannot be converted to MyInterface
Run Code Online (Sandbox Code Playgroud)

这个问题

我可以做一些泛型魔法,能够投射Function<T, R>到界面吗?

java java-8 method-reference

24
推荐指数
2
解决办法
2092
查看次数

在Java 8中将Map连接到String的最优雅方式

我喜欢番石榴,我会继续使用番石榴.但是,在有意义的地方,我尝试使用Java 8中的"新东西" .

"问题"

让我们说我想加入url属性String.在Guava我会这样做:

Map<String, String> attributes = new HashMap<>();
attributes.put("a", "1");
attributes.put("b", "2");
attributes.put("c", "3");

// Guava way
String result = Joiner.on("&").withKeyValueSeparator("=").join(attributes);
Run Code Online (Sandbox Code Playgroud)

resulta=1&b=2&c=3.

Java 8(没有任何第三方库)中,最优雅的方法是什么?

java dictionary java-8 java-stream

16
推荐指数
1
解决办法
9488
查看次数

将任一&lt;E,A&gt; 数组转换为任一&lt;E,A[]&gt;(Scalaz 中的序列函数)

我仍在学习和使用 fp-ts 并且无法弄清楚这一点。

我有一个数组,Either<any, number>[]我想得到一个Either<any, number[]>.

我已经查看Apply.sequenceT了示例 sequenceToOption,它看起来很接近。

import { NumberFromString } from 'io-ts-types/lib/NumberFromString'
import { Either } from 'fp-ts/lib/Either'

const a:Either<any,number>[] = ['1','2','3'].map(NumberFromString.decode)

console.log(a)
// [ { _tag: 'Right', right: 1 },
//   { _tag: 'Right', right: 2 },
//   { _tag: 'Right', right: 3 } ]
Run Code Online (Sandbox Code Playgroud)

我想要一个错误或数字数组。

functional-programming fp-ts

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

为什么java.util.function.Consumer没有identity()?

我只是注意到Consumer没有identity()像有那样的方法java.util.function.Function

是的,这只是一个可以放入东西的洞,但至少可以完全清楚地知道我不仅仅是在括号中遗漏了一些代码。

以这个人为的例子为例:

public void applyConsumerIfExists(String key, String param) {
    Map<String, Consumer<String>> consumers = new HashMap<>();
    consumers.put("a", MyClass::myConsumer);

    // I can create my own, but that's no fun :(
    Consumer<String> identity = input -> {};
    consumers.getOrDefault(key, identity).accept(param);

    // DOESN'T WORK, since identity() doesn't exist on Consumer
    consumers.getOrDefault(key, Consumer.identity()).accept(param);
}
Run Code Online (Sandbox Code Playgroud)

问题

为什么没有Consumer方法identity呢?

java java-8

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

JUnit文件结构,最佳实践(帮助类放置)

已建立的标准

我组织我的代码,以便my test-folder与my -folder具有相同的包main.我的测试类名称与我的类相同,但附加了Test.

到现在为止还挺好.

问题

在我的项目中,我发现自己util在我的文件test夹中创建了一个-package.在那里我保留了一些项目特定的"测试辅助类".

src  
?
????main
    ?   
    ????java
    ?   ?
    ?   ???? myPackage
    ?        MyClass.java
    ?        AnotherClass.java
    ?
    ????test
        ?
        ???? myPackage
        ?    MyClassTest.java
        ?    AnotherClassTest.java
        ?
        ???? util
             NiceTestUtil.java
Run Code Online (Sandbox Code Playgroud)

"问题"是我讨厌不对称.A util-package in test,感觉它应该测试相应util的包main.相反,它包含我的助手类.

我一直在想,也许这个util包属于main,但也感觉不对,因为它会混乱.

我使用JUnit 4.11和Gradle(如果它对任何人都很重要).

题:

什么被认为是"测试助手类"的最佳实践,文件结构?

java junit gradle

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