我有以下代码按降序对列表进行排序
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,仍然是一个负整数,广告的操作似乎没有溢出问题的影响.我做错了什么?
我知道要使方法成为 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) 我知道泛型类型不能扩展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它不是一个接口.
我遵循了 baeldung.com 的“ Apache Kafka with Spring 简介”教程。我用以下方法设置了一个KafkaConsumerConfig类kafkaConsumerFactory:
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) 在我的活动代码中,我有这些行
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 ×3
apache-kafka ×2
spring-kafka ×2
android ×1
comparator ×1
generics ×1
overflow ×1
try-catch ×1