小编ᴘᴀɴ*_*ᴛɪs的帖子

Java 8 collect()只有isPresent()可选值

有没有更优雅的方法在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具有值的结果.

java optional java-8 java-stream

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

如何使用Groovy生成Java方法引用以进行测试

我正在使用GroovyJUnit来测试我的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.

我怎么能做到这一点?

java groovy java-8 method-reference

9
推荐指数
1
解决办法
3108
查看次数

打字稿 - 为什么不能推断出这个字符串文字类型?

以下代码段未通过类型检查:

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

造成这种情况的原因是什么?如何解决?

types literals typescript

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

在不使用构造函数的情况下将WCHAR*转换为wstring

我有一个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数组.

c++

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

解绑外部服务android Paho MQTT ServiceConnectionLeaked错误

在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服务并取消绑定?

java service android paho

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

即使播种,C 中的 rand() 函数也不是随机的

这很可能是与机器有关的问题,但我无法弄清楚可能是什么问题。

#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

c random

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

无法为typescript enum分配字符串值(初始化器类型字符串不能分配给变量类型)

似乎从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怎么办?有没有解决的办法?

enums typescript

5
推荐指数
4
解决办法
2129
查看次数

Typescript - 绑定泛型类型“不可分配”给扩展类型的函数

我有一个基本类型Base,我想创建一个对象来保存接收某些子类型BaseExtendsBaseAExtendsBaseB在本例中)并将其映射到另一种类型的函数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)

generics types typescript

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

替换application.properties以外的Spring属性文件中的环境变量

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方法在不使用外部库的情况下替换属性文件中的这些环境变量?

java spring properties-file spring-boot

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

Typescript中协变和逆变位置的区别

我试图从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)

covariance typescript

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