小编Ale*_*kiy的帖子

Dart中的异步可迭代映射

我可以使用异步映射功能映射一些Iterable吗?也许这是一个错误,该代码会隐式打印_Future列表,而不是在1或5秒后显示整数吗?

import 'dart:async';

Future<int> foo(int i) {
  var c = new Completer();
  new Timer(new Duration(seconds: 1), () => c.complete(i));
  return c.future;
}

main() {
  var list = [1,2,3,4,5];
  var mappedList = list.map((i) async => await foo(i));
  print(mappedList);
}
Run Code Online (Sandbox Code Playgroud)

dart

9
推荐指数
5
解决办法
2952
查看次数

在Java中对枚举进行完全切换会产生"缺少返回语句"错误

假设,我们有switch语句,它完全涵盖了enum参数的所有可能情况,并且也有null检查,不会被编译的原因"Missing return statement".

enum Foo {ONE,TWO}

int fooToInt(Foo foo) {
    if (foo == null) {
        throw new NullPointerException();
    }
    switch (foo) {
        case ONE: return 1;
        case TWO: return 2;
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道,从defaultcase或enum之后抛出异常,或访问枚举元素而不是switch将解决问题.但我不明白这种行为的技术原因:显然,没有可能的执行分支,这不会导致returnthrow.在某些情况下,编译时检查是否涵盖所有案例都会很棒.

java enums switch-statement

7
推荐指数
3
解决办法
2344
查看次数

在Spring中隐式合格的自动装配

我有一个带有一些独立bean X的项目,它在一堆服务中自动装配.服务彼此使用,最后用于单入口点(控制器).现在有了新的要求:实现X的几个版本,并根据入口点的参数(枚举XType)决定使用一个版本.如果不改变服务就可以做到这一点.

我的解决方案是创建自定义范围UsesX和实现BeanFactoryPostProcessor,它将BeanDefinition使用UsesX 将每个范围转换为每个XType的单例集.此外,它还会为此bean添加限定符,以便在控制器中为X和基于参数的选择创建工厂方法.但是如何@Autowired隐式地在服务中添加这个限定符,而不更改它们的类?

UPD

好的,例如,我想"jdbc:mysql://Adb"A请求"jdbc:mysql://Bdb"时使用db url ,以及何时B:

enum DatabaseType {A, B}

@Controller
@RequestMapping(/)
class MyController {
@Autowired ServiceProvider provider; // some way to get service by DatabaseType
    void foo(@RequestParam DatabaseType dbType) {
       ServiceA a = provider.getA(dbType);
       a.bar();
       ServiceB b = provider.getB(dbType);
       b.baz();
    }
}

@Service
class ServiceA {
    // Don't want to get information about different databases in services
    @Autowired ServiceB b;
    @Autowired ServiceC c; …
Run Code Online (Sandbox Code Playgroud)

java spring

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

Kotlin如何推断Java方法参数可为空性?

我正在尝试org.springframework.data.mongodb.core.query.Update#set从Kotlin代码调用Java方法。此方法声明为

public Update set(String key, Object value)
Run Code Online (Sandbox Code Playgroud)

没有关于参数可空性的其他注释或注释。事实上,它只是把valueHashMap,所以有效地value可能null

但是,Kotlin编译器将value类型视为Any(而不是期望的Any!)类型,并且在null

Null can not be a value of a non-null type Any
Run Code Online (Sandbox Code Playgroud)

!!明显原因导致传递可空值KotlinNullPointerExceptionas Any抛出异常TypeCastException

这种可空性推断背后的逻辑是什么?通过null反射传递参数实际上效果很好,但是还有更自然的解决方案吗?

java null kotlin

3
推荐指数
1
解决办法
66
查看次数

标签 统计

java ×3

dart ×1

enums ×1

kotlin ×1

null ×1

spring ×1

switch-statement ×1