有没有更优雅的方法在Java 8中实现这一目标?
list.stream()
.map(e -> myclass.returnsOptional(e))
.filter(Optional::isPresent)
.map(Optional::get)
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
我正在谈论filter(Optional::isPresent)随后map(Optional::get),我想优雅地在列表中收集Optional具有值的结果.
我正在使用Groovy它JUnit来测试我的Java代码.
我需要测试的方法foo()这需要在java.util.function.Function
public void foo(Function<Foo,Bar> func){
return null;
}
Run Code Online (Sandbox Code Playgroud)
在我的正常代码中,我foo通过传入方法的方法引用来调用,bar即.
foo(mybar::bar)
Run Code Online (Sandbox Code Playgroud)
我怎样才能Groovy优雅地测试这个功能?
使用:
mybar.&bar
Run Code Online (Sandbox Code Playgroud)
产生groovy.lang.Closure<...>与之不相容的java.util.function.Function.
我怎么能做到这一点?
以下代码段未通过类型检查:
type TaskType = 'SIMPLE' | 'COMPLEX'
interface TaskDefinition {
name: string,
task: string,
taskType: TaskType
};
const test: TaskDefinition = {
name: '',
task: '',
taskType: 'SIMPLE' // This is fine
};
const tasks : TaskDefinition[] = ["apples", "pears"].map(i => {
return {
name: i,
task: i,
taskType: 'SIMPLE' // This one is not
};
})
Run Code Online (Sandbox Code Playgroud)
{name:string; 任务:字符串; taskType:string; } [] 不能赋值 为TaskDefinition [].
尽管目标类型存在,但它似乎taskType被推断为string而不是TaskTypeTaskDefinition
造成这种情况的原因是什么?如何解决?
我有一个wchar数组,我需要使用winapi函数写入数据,我想得到它std::wstring,我知道std::wstring t(wText);工作,但我不能在if语句中声明它,因为它不会存在于该范围之外.另外我不能以这种方式调用构造函数:
WCHAR wText[256];
std::wstring t = L"";
if (somecondition)
{
t = t(wText);
}
Run Code Online (Sandbox Code Playgroud)
我能做什么?我希望wstring等于 ""条件不满足时和满足条件时我希望得到一个WCHAR数组.
在Android中取消绑定外部服务(位于另一个jar)文件的正确方法是什么?
我org.eclipse.paho.android.service-1.0.2.jar将清单文件中的服务(位于)声明为:
<service android:name="org.eclipse.paho.android.service.MqttService" >
</service>
Run Code Online (Sandbox Code Playgroud)
服务来源在这里
服务运行正常.但是,在退出应用程序时,我收到一个ServiceConnectionLeaked错误,在进行一些搜索后,我发现我需要调用活动unbindService(...);的onDestroy()方法.
日志:
24915-24915/com.testapp.testmqtt E/ActivityThread? Activity com.testapp.testmqtt.MainActivity has leaked ServiceConnection org.eclipse.paho.android.service.MqttAndroidClient$MyServiceConnection@426c50d8 that was originally bound here
android.app.ServiceConnectionLeaked: Activity com.testapp.testmqtt.MainActivity has leaked ServiceConnection org.eclipse.paho.android.service.MqttAndroidClient$MyServiceConnection@426c50d8 that was originally bound here
Run Code Online (Sandbox Code Playgroud)
但是,我没有ServiceConnection传递给unbindService()我,因为我没有手动启动该服务.有没有办法获得该ServiceConnection服务并取消绑定?
这很可能是与机器有关的问题,但我无法弄清楚可能是什么问题。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int argc, char** argv) {
srand(time(NULL));
int r1 = rand();
int r2 = rand();
printf("%d %d\n", r1, r2);
}
Run Code Online (Sandbox Code Playgroud)
我编译上面的代码使用
gcc randd.c
Run Code Online (Sandbox Code Playgroud)
然后手动运行几次,第一个数字看起来非常相似,而第二个数字似乎是随机的:
1025720610 1435057801
1025737417 1717533050
1025754224 2000008299
1025771031 134999901
1025787838 417475150
Run Code Online (Sandbox Code Playgroud)
第一次调用rand()似乎与时间密切相关,并且随着时间的推移严格增加。关于为什么会发生这种情况或如何解决它的任何想法?
这发生在 OSX 10.11
似乎从TypeScript 2.4开始,String Enums 是一个功能.
但是以下不起作用:
enum Foo {
A = "A",
B = "B"
}
var foo : Foo = "A";
Run Code Online (Sandbox Code Playgroud)
初始化程序类型字符串不能分配给变量类型Foo
字符串文字工作:
type Foo = "A" | "B";
Run Code Online (Sandbox Code Playgroud)
但是,如果我想使用一个enum怎么办?有没有解决的办法?
我有一个基本类型Base,我想创建一个对象来保存接收某些子类型Base(ExtendsBaseA或ExtendsBaseB在本例中)并将其映射到另一种类型的函数C。
我试图将“某些子类型Base”声明为<T extends Base>,但类型检查失败,并显示以下内容:
类型“(baseA: ExtendsBaseA) => C”不可分配给类型“(base: T) => C”。
参数“base”和“baseA”的类型不兼容。
类型“T”不可分配给类型“ExtendsBaseA”。
类型“Base”不可分配给类型“ExtendsBaseA”。
类型“Base”中缺少属性“b”。
片段
interface Base {
a: string
}
interface ExtendsBaseA extends Base {
b: string
}
interface ExtendsBaseB extends Base {
c: string
}
interface C {}
class Foo {
private readonly handlers: {
[key: string]: <T extends Base> (base: T) => C
}
constructor() {
this.handlers = {
'bar' …Run Code Online (Sandbox Code Playgroud) Spring Boot将使用相应的环境变量自动解析文件中的任何${ENV}占位符application.properties.
但是,当我quartz.properties通过PropertiesFactoryBeanQuartz配置文件提供时,这种解决方案不会发生.
@Bean
public Properties getQuartzProperties() throws IOException {
PropertiesFactoryBean propertiesFactoryBean = new PropertiesFactoryBean();
propertiesFactoryBean.setLocation(new ClassPathResource("/quartz.properties"));
propertiesFactoryBean.afterPropertiesSet();
return propertiesFactoryBean.getObject();
}
Run Code Online (Sandbox Code Playgroud)
有没有Spring方法在不使用外部库的情况下替换属性文件中的这些环境变量?
我试图从Typescript 高级类型手册中了解以下示例。
引用,它说:
以下示例演示了协变位置中同一类型变量的多个候选者如何导致推断联合类型:
type Foo<T> = T extends { a: infer U, b: infer U } ? U : never;
type T10 = Foo<{ a: string, b: string }>; // string
type T11 = Foo<{ a: string, b: number }>; // string | number
Run Code Online (Sandbox Code Playgroud)
同样,逆变位置中同一类型变量的多个候选会导致推断出交叉类型:
type Bar<T> = T extends { a: (x: infer U) => void, b: (x: infer U) => void } ? U : never;
type T20 = Bar<{ a: (x: string) => void, …Run Code Online (Sandbox Code Playgroud) java ×4
typescript ×4
java-8 ×2
types ×2
android ×1
c ×1
c++ ×1
covariance ×1
enums ×1
generics ×1
groovy ×1
java-stream ×1
literals ×1
optional ×1
paho ×1
random ×1
service ×1
spring ×1
spring-boot ×1