小编Vin*_*Vin的帖子

Java - 列出<Integer>排序,比较器和溢出

我有以下代码按降序对列表进行排序

List<Integer> list=Arrays.asList(Integer.MAX_VALUE, -1);
list.sort((x, y) -> y-x);
System.out.println(list)
Run Code Online (Sandbox Code Playgroud)

结果是

[-1, 2147483647]
Run Code Online (Sandbox Code Playgroud)

现在,我知道我不应该写yx因为它可能导致溢出问题.

但问题是为什么输出呢?我相信,输出会[2147483647, -1]因为-1 - Integer.MAX_VALUEIS -2147483648,仍然是一个负整数,广告的操作似乎没有溢出问题的影响.我做错了什么?

java overflow comparator

9
推荐指数
2
解决办法
600
查看次数

Spring for Apache Kafka 中的侦听器容器是什么?

我知道要使方法成为 Kafka 消息侦听器的目标,我必须使用 @KafkaListener 注释标记此方法。此注释允许通过 containerFactory 元素指定 KafkaListenerContainerFactory。

下面是 Baeldung Spring Kafka 教程的一些片段。

KafkaConsumerConfig.java

private ConsumerFactory<String, String> consumerFactory(String groupId) {
    Map<String, Object> props = new HashMap<>();
    ...
    return new DefaultKafkaConsumerFactory<>(props);
}

private ConcurrentKafkaListenerContainerFactory<String, String> kafkaListenerContainerFactory(String groupId) {
    ConcurrentKafkaListenerContainerFactory<String, String> factory =
            new ConcurrentKafkaListenerContainerFactory<>();
    factory.setConsumerFactory(consumerFactory(groupId));
    return factory;
}

@Bean
public ConcurrentKafkaListenerContainerFactory<String, String> fooKafkaListenerContainerFactory() {
    return kafkaListenerContainerFactory("foo");
}
Run Code Online (Sandbox Code Playgroud)

消息监听器.java

@KafkaListener(
    topics = "${message.topic.name}", 
    groupId = "foo", 
    containerFactory = "fooKafkaListenerContainerFactory")
public void listenGroupFoo(String message) {
    System.out.println("Received Message in group 'foo': " + message); …
Run Code Online (Sandbox Code Playgroud)

apache-kafka kafka-consumer-api spring-kafka

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

Java - 为什么不能在catch子句中键入参数?

我知道泛型类型不能扩展Throwable,我知道这没有意义,因为类型擦除(异常只在运行时抛出)和其他微妙的东西.

但是,Java允许类型参数受Throwable限制,实际上以下代码是合法的

class MyClass<T extends Throwable> { /*body of the class */ }
Run Code Online (Sandbox Code Playgroud)

什么是非法的是T在catch子句中使用参数

try { //do something that throws exception //  }
catch(T e) /* ILLEGAL!!! DOESN'T COMPILE */ {}
Run Code Online (Sandbox Code Playgroud)

我能理解这个约束的唯一原因是,在这种情况下,type参数,因为擦除,被它的边界类型所取代Throwable.但是类型参数也可能受到多个边界类型的限制,所以我可能会遇到这种情况

class MyClass<T extends Object & Throwable> [*]
Run Code Online (Sandbox Code Playgroud)

在这种情况下T,在擦除之后被替换,Object并且我知道Object(不是类型Throwable)变量不能在catch子句中.

如果这是Java约束的原因,请告诉我.谢谢.

编辑:[*]由于davidxxx让我注意到,这个类声明不编译,因为Throwable它不是一个接口.

java generics try-catch

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

@KafkaListener 与 ConsumerFactory groupId

我遵循了 baeldung.com 的“ Apache Kafka with Spring 简介”教程。我用以下方法设置了一个KafkaConsumerConfigkafkaConsumerFactory

private ConsumerFactory<String, String> kafkaConsumerFactory(String groupId) {
    Map<String, Object> props = new HashMap<>();
    ...
    props.put(ConsumerConfig.GROUP_ID_CONFIG, groupId);
    ...
    return new DefaultKafkaConsumerFactory<>(props);
}
Run Code Online (Sandbox Code Playgroud)

和两个“定制”工厂:

@Bean
public ConcurrentKafkaListenerContainerFactory<String, String> fooKafkaListenerContainerFactory() {
    return kafkaListenerContainerFactory("foo");
}

@Bean
public ConcurrentKafkaListenerContainerFactory<String, String> barKafkaListenerContainerFactory() {
    return kafkaListenerContainerFactory("bar");
}
Run Code Online (Sandbox Code Playgroud)

MessageListener课堂上,我使用@KafkaListener注释来注册消费者,以groupId监听某个主题:

@KafkaListener(topics = "${message.topic.name}", groupId = "foo", containerFactory = "fooKafkaListenerContainerFactory")
public void listenGroupFoo(String message) {
    System.out.println("Received Message in group 'foo': " + …
Run Code Online (Sandbox Code Playgroud)

apache-kafka kafka-consumer-api spring-kafka

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

Android - EditText 不可编辑且不可选择

在我的活动代码中,我有这些行

EditText editText=(EditText)findViewById(R.id.editText);
editText.setTextIsSelectable(false);
Run Code Online (Sandbox Code Playgroud)

我想要实现的是EditText不可编辑和不可选择的。使用前一行,我尝试实现第二个选项,但不起作用。将EditText仍然是可选的。

为了使EditText不可编辑,我还没有找到任何诸如setEditable或类似的方法。我阅读了有关设置的内容,InputType但没有成功。

然而,不可选择的约束可以被削弱。我的主要目标是里面的文字EditText不能因任何原因而改变。由于这些原因,EditRext可以选择但我希望没有用户可以剪切文本。

我不想要 XML,只想要 Java 代码。所有这些都需要以编程方式进行。

java android android-edittext

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