Lombok在自动生成构造函数时错过了field的注释.有没有办法在构造函数输入参数中保留字段的注释?
生成构造函数的类,
@RequiredArgsConstructor(onConstructor = @__(@Inject))
public class Test {
@Named("MyField")
private final String field;
@Named("MyHandler")
private final SomeHandler handler;
}
Run Code Online (Sandbox Code Playgroud)
生成的类:
public class Test {
@Named("MyField")
private final String field;
@Named("MyField")
private final SomeHandler handler;
@Inject
public Test(final String field, final SomeHandler handler) {
this.field = field;
this.handler = handler;
}
}
Run Code Online (Sandbox Code Playgroud)
期望的课程:
public class Test {
@Named("MyField")
private final String field;
@Named("MyHandler")
private final SomeHandler handler;
@Inject
public Test(@Named("MyField")final String field,
@Named("MyHandler")final SomeHandler handler) {
this.field = field;
this.handler …Run Code Online (Sandbox Code Playgroud) 如何处理字符串列表并将其收集到 Map 或不可变映射中(仅对于那些存在值的字符串)
String anotherParam = "xyz";
Map.Builder<String,String> resultMap = ImmutableMap.builder(..)
listOfItems.stream()
.filter(Objects::nonNull)
.distinct()
.forEach(
item -> {
final Optional<String> result =
getProcessedItem(item,anotherParam);
if (result.isPresent()) {
resultMap.put(item, result.get());
}
});
return resultMap.build();
Run Code Online (Sandbox Code Playgroud)
请告诉,有没有更好的方法通过收集来实现这一点?
用例:
通过返回ImmutableTable类型的方法处理字符串列表{R,C,V}.例如ImmutableTable of {Integer,String,Boolean} process(String item){...}
收集结果,即合并所有结果并返回ImmutableTable.有没有办法实现它?
目前的实施(波希米亚建议):
如何使用并行流?以下代码中是否存在并发问题?使用并行流我在tableBuilder.build()上得到"索引1800处的NullPointerException",但是对流工作正常.
ImmutableTable<Integer, String, Boolean> buildData() {
// list of 4 AwsS3KeyName
listToProcess.parallelStream()
//Create new instance via Guice dependency injection
.map(s3KeyName -> ProcessorInstanceProvider.get()
.fetchAndBuild(s3KeyName))
.forEach(tableBuilder::putAll);
return tableBuilder.build(); }
Run Code Online (Sandbox Code Playgroud)
虽然下面的代码与流和并行流有关.但是由于row和col的重复输入,ImmutableBuild失败了.什么是在合并表时防止重复的最佳方法?
public static <R, C, V> Collector<ImmutableTable<R, C, V>,
ImmutableTable.Builder<R, C, V>, ImmutableTable<R, C, V>>
toImmutableTable()
{
return Collector.of(ImmutableTable.Builder::new,
ImmutableTable.Builder::putAll, (builder1, builder2) ->
builder1.putAll(builder2.build()), ImmutableTable.Builder::build); }
Run Code Online (Sandbox Code Playgroud)
编辑:如果在合并不同的表时ImmutableTable.Builder中有任何重复的条目,那么它会失败,
试图通过将ImmutableTables放在HashBasedTable中来避免faluire
ImmutableTable.copyOf(itemListToProcess.parallelStream()
.map(itemString ->
ProcessorInstanceProvider.get()
.buildImmutableTable(itemString))
.collect(
Collector.of(
HashBasedTable::create,
HashBasedTable::putAll,
(a, …Run Code Online (Sandbox Code Playgroud) 请说出哪一种是创建 Kafka 消费者客户端的最佳实践。
public class KafkaConsumerFactory {
public static createKafKafkaConsumer(){
KafkaConsumer consumer = new KafkaConsumer< (getKafkaConsumerProperties());
consumer.subscribe(Collections.Singleton.(getTopic()));
return consumer;
}
Run Code Online (Sandbox Code Playgroud)
或者
public class KafkaConsumerFactory {
private static KafkaConsumer consumer;
@Synchronized
public static KafkaConsumer createKafKafkaConsumer(){
if(consumer = null)
{
consumer = new KafkaConsumer< (getKafkaConsumerProperties());
consumer.subscribe(Collections.Singleton.(getTopic()));
}
return consumer;
}
}
Run Code Online (Sandbox Code Playgroud)
在生产环境中使用单例 Kafka 消费者客户端会有什么可观的好处吗?
执行下面的代码时出错,
引起:java.lang.IllegalAccessError:试图从类访问com.google.common.collect.AbstractTable类
ImmutableTable.copyOf(listItemsToProcess.parallelStream()
.map(item ->
ProcessorInstanceProvider.getInstance()
.buildImmutableTable(item))
.collect(() -> HashBasedTable.create(),
HashBasedTable::putAll,
HashBasedTable<Integer, String,
Boolean>::putAll)
);
Run Code Online (Sandbox Code Playgroud)
出现错误 - HashBasedTable :: putAll使用Oracle的1.8 jre
我正在尝试使用DynamoDb事务库扫描操作:
扫描操作返回包含Map的ScanResult.将它映射到对象是否更好?
有一个名为ItemConvertor的界面http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/dynamodbv2/datamodeling/ItemConverter.html,有没有具体的实现呢?
寻找一种简单的方法来收集KeyAndValues having fields - String and List<T>到ImmutableListMultimap<String,T>?试图做一些像,
Collector.of(
ImmutableListMultimap.Builder::new,
ImmutableListMultimap.Builder<String,List<T>>::putAll,
(b1, b2) -> b1.putAll(b2.build()),
(builder) -> builder.build());
Run Code Online (Sandbox Code Playgroud)
putAll需要Key,List<T>.我不知道如何在组合器中实现这一点.
编辑:
@Value(staticConstructor = "of")
private static class KeyAndValues<T> {
private final String key;
private final List<T> values;
}
Run Code Online (Sandbox Code Playgroud) java ×6
guava ×4
java-8 ×4
collectors ×3
apache-kafka ×1
aws-sdk ×1
gson ×1
guice ×1
jackson ×1
lombok ×1