小编hol*_*ava的帖子

如何在Kotlin中创建固定大小的IntArray并在以后初始化数组?

我只是在kotlin的初级水平.我没有任何办法在kotlin中为数组添加值.我想从用户获取值并将它们添加到数组中.

val arr = arrayOf<Int>()
Run Code Online (Sandbox Code Playgroud)

要么

var arr = intArrayOf()
Run Code Online (Sandbox Code Playgroud)

像在Java中一样

Scanner ob=new Scanner(System.in);
int arr[]=new int[5];
for(int i=0;i<arr.length;i++)
{
arr[i]=ob.nextInt();
}
Run Code Online (Sandbox Code Playgroud)

如何在kotlin中执行相同的操作?

arrays kotlin

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

如何让数据类在Kotlin中实现Interface/extends Superclass属性?

我有几个数据类,其中包括一个var id: Int?字段.我想在接口超类中表达它,并且有数据类扩展它并id在构造时设置它.但是,如果我试试这个:

interface B {
  var id: Int?
}

data class A(var id: Int) : B(id)
Run Code Online (Sandbox Code Playgroud)

它抱怨我压倒了这个id领域,我是哈哈.

:A在这种情况下,我如何让数据类在id构造时使用它,并设置id接口超类中声明的数据

inheritance properties kotlin data-class

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

什么是开放财产?为什么我不能将其设置为私有?

Kotlin的财产和开放财产有什么区别?下面的代码抱怨我将setter 设为私有,而Intellij则说开放属性不允许私有 setter 。什么是开放财产?

@RestController
open class ParameterController {

  @Autowired
  lateinit var parameterRepository: ParameterRepository
    private set //error


}
Run Code Online (Sandbox Code Playgroud)

为什么上面的代码无效,但此代码有效?

open class ItemPrice{

    lateinit var type: String
        private set // ok

}
Run Code Online (Sandbox Code Playgroud)

编辑:我正在使用spring-allopen插件,并且将类显式标记为open没什么区别。

spring properties kotlin kotlin-allopen

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

使用收集器执行flatMap操作

我想了解flatMap使用Collectors 执行一段时间的方法.这是一个例子.

场景:

我有以下接口:

interface Ic {
    //empty
}

interface Ib {
    Stream<Ic> getCs();
}

interface Ia {
    String getName();
    Stream<Ib> getBs();
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试实现以下方法:

Map<String, Long> total_of_C_per_A (Stream<Ia> streamOfA) {
   return streamOfA.collect(groupBy(Ia::getName, ???));
}
Run Code Online (Sandbox Code Playgroud)

分类功能相当straitforward,我的问题是与下游收集器.我需要计算与"A"相关的"C"数.

我试图:

如果我想简单地返回计数而不创建地图,我会这样做:

streamOfA
  .flatMap(Ia::getBs)
  .flatMap(Ib::getCs)
  .count();
Run Code Online (Sandbox Code Playgroud)

但是这个Collectors类只允许我做映射操作.我还能尝试做些什么?

谢谢.

java java-8 java-stream

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

Java 8 根据最后一个值生成整数流

我需要根据一些数学函数生成整数流,每个值都基于之前的值。

例如 - 假设我想取最后一个数字并加 10:[1, 11, 21, 31, 41, ...]

当然真正的功能要复杂得多。

我尝试以斐波那契为例,但无法使其工作:

Stream.iterate(new long[]{ 1, 1 }, p->new long[]{ p[1], p[0]+p[1] })
      .limit(92).forEach(p->System.out.println(p[0]));
Run Code Online (Sandbox Code Playgroud)

我只能从1开始。

这是我尝试做的:

Stream.iterate(new long[]{ 1 }, p-> {p[0], p[0] + 10})
.limit(4).forEach(p->System.out.println(p[0]));
Run Code Online (Sandbox Code Playgroud)

java-8 java-stream

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

盒装Int的Kotlin不一样

请帮助我理解kotlin文档中的这段代码: -

val a: Int = 10000
print(a === a) // Prints 'true'
val boxedA: Int? = a
val anotherBoxedA: Int? = a
print(boxedA === anotherBoxedA) // !!!Prints 'false'!!!
Run Code Online (Sandbox Code Playgroud)

现在,我明白,int a = 10000在下一行中它首先使用它进行比较===.

现在问题是为什么当它被分配时boxedA=a,它检查它是否为空使用int?.可以这样写: -

val boxedA: Int=a
Run Code Online (Sandbox Code Playgroud)

如果我以错误的方式理解它,有人指导检查正确的地方或为我解释一下.

autoboxing boxing nullable kotlin

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

如何获得封闭课程?

我知道Class.getDeclaredClasses()可以获得它声明但不包括匿名类的所有类.

我想知道有没有办法通过封闭的类获得所有封闭的类?例如,我想获得Root为测试目的定义的所有封闭类.

class Root{
   void run(){
      Runnable task = new Runnable(){
         public void run(){}
      };

      task.getClass().getEnclosingClass();// return Root.class
      // but I want to get all enclosed class via Root.class, for example:
     // Root.class... == task.getClass() 
   }
}
Run Code Online (Sandbox Code Playgroud)

预期的结果是:[class of task].

java java-8

4
推荐指数
1
解决办法
169
查看次数

Kotlin NullPointerException发生

我是新手 当我开始Null Safety时,我对下面的情况感到困惑.

关于初始化存在一些数据不一致(在构造函数中可用的未初始化的某些地方).

任何人都可以更详细地描述这种情况吗?

nullpointerexception kotlin

4
推荐指数
1
解决办法
1924
查看次数

为什么并行性ForkJoinPool加倍我的异常?

假设我有如下代码:

Future<Object> executeBy(ExecutorService executor) {
    return executor.submit(() -> {
        throw new IllegalStateException();
    });
}
Run Code Online (Sandbox Code Playgroud)

使用ForkJoinPool#commonPool时没有问题,但是当我使用并行性时ForkJoinPool它会加倍IllegalStateException.例如:

executeBy(new ForkJoinPool(1)).get(); 
//                              ^--- double the IllegalStateException
Run Code Online (Sandbox Code Playgroud)

Q1:为什么并行ForkJoinPool一倍Exception发生在Callable

Q2:如何避免这种奇怪的行为?

java exception fork-join java-8

4
推荐指数
2
解决办法
1199
查看次数

为什么在java-8流减少操作中不执行组合器功能?

我试图了解流中的 reduce 方法是如何工作的。

Stream.of(1,2,3,4,5,6,7).reduce(new ArrayList<>(),
(List<Integer> l, Integer a) -> {l.add(a);return l;},
(List<Integer> l1, List<Integer> l2) -> {
System.out.println("l1 is" + l1 + "l2 is " + l2);
l1.addAll(l2);
return l1;
}).forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)

该行System.out.println("l1 is" + l1 + "l2 is " + l2)永远不会被打印。我可以理解发生了什么,(List<Integer> l, Integer a) -> {l.add(a);return l;}
有人可以解释为什么没有打印出来吗?java文档说function for combining two values, which must be compatible with the accumulator function

谢谢,阿马尔

java java-8 java-stream

4
推荐指数
1
解决办法
942
查看次数