小编Let*_*far的帖子

Kotlin的扩展领域

在Kotlin中编写扩展方法很容易:

class A { }
class B {
    fun A.newFunction() { ... }
}
Run Code Online (Sandbox Code Playgroud)

但有没有办法创建扩展变量?喜欢:

class B {
    var A.someCounter: Int = 0
}
Run Code Online (Sandbox Code Playgroud)

kotlin

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

Kotlin中的静态数据

请告诉我,这个例子中是否存在任何差异(就Java而言):

  1. object DefaultValues {
        val FILES_TO_DOWNLOAD = 100
    }
    
    Run Code Online (Sandbox Code Playgroud)

    class DefaultValues {
        companion object {
            val FILES_TO_DOWNLOAD = 100
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 没有类或对象包装器:

    const val DEFAULT_FILES_TO_DOWNLOAD = 100
    
    Run Code Online (Sandbox Code Playgroud)

    val DEFAULT_FILES_TO_DOWNLOAD = 100
    
    Run Code Online (Sandbox Code Playgroud)

定义的真正方法是什么?:

public static final int FILES_TO_DOWNLOAD = 100
Run Code Online (Sandbox Code Playgroud)

kotlin

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

将列表分成几部分

是否有一种简单的方法可以将列表分成Kotlin中的部分(可能是一些lambda)?

例如:

[1, 2, 3, 4, 5, 6] => [[1, 2], [3, 4], [5, 6]]
Run Code Online (Sandbox Code Playgroud)

kotlin

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

如何使用stream - Java 8将List转换为带索引的Map?

我已经创建了计算字母表中每个字符的方法.我正在学习流(函数式编程)并尝试尽可能多地使用它们,但在这种情况下我不知道该怎么做:

private Map<Character, Integer> numerateAlphabet(List<Character> alphabet) {
    Map<Character, Integer> m = new HashMap<>();
    for (int i = 0; i < alphabet.size(); i++)
        m.put(alphabet.get(i), i);
    return m;
}
Run Code Online (Sandbox Code Playgroud)

那么,如何使用Java 8流重写它呢?

java java-8 java-stream

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

如何在Kotlin中将Int转换为Char

使用Java原语,可以很容易地将char代码转换为符号

int i = 65;
char c = (char) i; // 'A'
Run Code Online (Sandbox Code Playgroud)

如何与Kotlin一样?

kotlin

16
推荐指数
1
解决办法
7364
查看次数

限制Kotlin的功能

limitJava 8中有一个stream方法:

package com.concretepage.util.stream;
import java.util.Arrays;
import java.util.List;
public class LimitDemo {
    public static void main(String[] args) {
        List<String> list = Arrays.asList("AA","BB","CC","DD","EE");    
        list.stream().limit(3).forEach(s->System.out.println(s));
    }        
} 
Run Code Online (Sandbox Code Playgroud)

输出:

AA
BB
CC 
Run Code Online (Sandbox Code Playgroud)

Kotlin中的模拟名称是什么,或者如何通过其他方式更好地做到这一点?

java-8 kotlin java-stream

11
推荐指数
1
解决办法
3417
查看次数

为什么不展望未来,看看在Kotlin的Regex工作背后?

例:

    // Java
    System.out.println("one;two;th/;ree".split("(?<!/);").length);  // 3

    // Kotlin
    println("one;two;th/;ree".split("(?<!/);").size) // 1
Run Code Online (Sandbox Code Playgroud)

怎么纠正这个?

regex kotlin

8
推荐指数
1
解决办法
494
查看次数

使用带有通用接口或类的约束

假设我们编写了一个测试系统.测试包含任务列表,每个任务包含问题和答案列表.我们还假设问题或答案不仅可以是文本,还可以是图像.所以我们使用泛型:

public interface IQuestion<T>
{
    T Content { get; }
}

public interface IAnswer<T>
{
    T Content { get; }
    bool IsCorrect { get; }
}
Run Code Online (Sandbox Code Playgroud)

当我们创建任务时会出现问题:

interface ITask<TQuestion, TAnswer> 
{
    TQuestion Question { get; }
    List<TAnswer> Answers { get; }
}
Run Code Online (Sandbox Code Playgroud)

怎么写TQuestion应该是子类型IQuestionTAnswer- 子类型IAnswer

我试过了:

interface ITask<TQuestion, TAnswer> 
    where TQuestion : IQuestion<object>
    where TAnswer : IAnswer<object>
Run Code Online (Sandbox Code Playgroud)

但是当我创建时:

class TextQuestion : IQuestion<string> {...}
class TextAnswer : IAnswer<string> {...}
Run Code Online (Sandbox Code Playgroud)

这不起作用:

class TextTask : ITask<TextQuestion, …
Run Code Online (Sandbox Code Playgroud)

.net c#

8
推荐指数
1
解决办法
89
查看次数

作为函数参数的类

我有一个函数,过滤一些值的列表,它使用instanseof构造:

 public static List<View> getAllChildren(View v) {
    /* ... */
    if (v instanceof Button) {
        resultList.add(v);
    }
    /* ... */
 }
Run Code Online (Sandbox Code Playgroud)

我想让它更通用,并将Button设置为函数参数:

 public static List<View> getAllChildren(View v, ? myClass) {
    /* ... */
    if (v instanceof myClass) {
        resultList.add(v);
    }
    /* ... */
 }
Run Code Online (Sandbox Code Playgroud)

但我不知道如何将myClass传递给函数.请告诉我如何概括这个功能?

java

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

从List <String>中查找具有最大小写字母数的字符串.(使用流)

我做过这样的事情:

List<String> strList = asList("getElementById", "htmlSpecialChars", "httpRequest");
String maxOfLowercase = strList.stream()
            .max((o1, o2) -> {
                long lowerCount1 = o1.chars().filter(Character::isLowerCase).count();
                long lowerCount2 = o2.chars().filter(Character::isLowerCase).count();
                return Long.compare(lowerCount1, lowerCount2);
            }).get();
Run Code Online (Sandbox Code Playgroud)

但我认为有可能让这更容易\射手,不是吗?

java collections java-8 java-stream

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

标签 统计

kotlin ×6

java ×3

java-8 ×3

java-stream ×3

.net ×1

c# ×1

collections ×1

regex ×1