例
在这个(简化的)示例中,我可以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 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)
凡result为a=1&b=2&c=3.
题
在Java 8(没有任何第三方库)中,最优雅的方法是什么?
我仍在学习和使用 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)
我想要一个错误或数字数组。
我只是注意到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呢?
已建立的标准
我组织我的代码,以便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(如果它对任何人都很重要).
题:
什么被认为是"测试助手类"的最佳实践,文件结构?