小编sid*_*dss的帖子

Lombok - 在构造函数输入参数中保留字段的注释

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)

java guice lombok

22
推荐指数
2
解决办法
3263
查看次数

处理列表流并收集到仅包含非空值的map/ImmutableMap

如何处理字符串列表并将其收集到 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)

请告诉,有没有更好的方法通过收集来实现这一点?

java guava java-8 collectors

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

Guava不可变表的Java 8收集器

用例:
通过返回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)

java guava java-8 immutable-collections

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

Kafka 消费者客户端创建单例实例 vs 静态方法

请说出哪一种是创建 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 design-patterns apache-kafka kafka-consumer-api

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

Java lang IllegalAccess通过HashBasedTable累加器收集Guava不可变表

执行下面的代码时出错,

引起: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

java guava java-8 collectors

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


Java 8 Collector for Guava的ImmutableListMultimap <String,T>

寻找一种简单的方法来收集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 guava java-8 collectors

0
推荐指数
1
解决办法
572
查看次数