Size: a a a

2021 February 20

NG

Nikita Gryzlov in pro.jvm
Asad Ganiev
Добрый день.
Из code coverage библиотек какой сейчас самый актуальный? Я просто раньше Code Coverage Intellij IDEA использовал. Посоветуйте пож-та
jacoco
источник

AG

Asad Ganiev in pro.jvm
Меня всегда пугало его версия v0.8.6? То что с нуля начинается
источник

AG

Alexey Genus in pro.jvm
Не парьтесь, это фактически лучший coverage из тех, что есть для java сегодня
источник

AG

Asad Ganiev in pro.jvm
Ок. Спасибо
источник

HH

Human Human in pro.jvm
Не могу понять - почему ругается на такое. И как сделать, то что мне нужно? Подскажите - плиз.

   private final Map<Class<?>, Supplier<Class<?>>> suppliers = new HashMap<>();
   public <Type> void add(Class<Type> key, Supplier<Class<Type>> value){
       suppliers.put(key, value);
   }
источник

ch

central hardware in pro.jvm
так как ругается?
источник

HH

Human Human in pro.jvm
central hardware
так как ругается?
error: incompatible types: Supplier<Class<Type>> cannot be converted to Supplier<Class<?>>
       suppliers.put(key, value);
                          ^
 where Type is a type-variable:
   Type extends Object declared in method <Type>add(Class<Type>,Supplier<Class<Type>>)
источник

HH

Human Human in pro.jvm
Надо Object вместо wildcard поставить я так понимаю, но не понимаю проблематику
источник

AG

Alexey Genus in pro.jvm
Немного бессмысленный код, потому что Supplier<Class<Type>> может вернуть ровно один класс - Type.class
источник

HH

Human Human in pro.jvm
Alexey Genus
Немного бессмысленный код, потому что Supplier<Class<Type>> может вернуть ровно один класс - Type.class
Посмотрите внимательнее - Type это дженерик тайп
источник

AG

Alexey Genus in pro.jvm
Да, я понимаю. Но дженерики же инвариантны, поэтому вариант только один. Возможно, есть пример реального вызова и ожидаемых вариантов ответа? Думаю, это помогло бы понять, что хочется получить.
источник

DS

Dmitriy Shibaev in pro.jvm
Всем привет.
Кто-нибудь работал с kotest?
Я тут пытаюсь регрессионный тест написать для проверки что алгоритм не залипает в вечном цикле, а kotest с invocationTimeout правильно работает только если тред засыпает, а если в while(true) крутится - то нет. Что делать? Не спавнить же руками треды для мониторинга?
источник

HH

Human Human in pro.jvm
Alexey Genus
Да, я понимаю. Но дженерики же инвариантны, поэтому вариант только один. Возможно, есть пример реального вызова и ожидаемых вариантов ответа? Думаю, это помогло бы понять, что хочется получить.
Хочу, чтобы при вызове моего метода “add”. 2 типа были одинаковы.
Вот реальный код:

private final Map<Class<Object>, Supplier<ChatFormHandler<Object>>> formHandlers = new HashMap<>();

public <ChatForm> void addFormHandlerBuilder(Class<ChatForm> formType, Supplier<ChatFormHandler<ChatForm>> chatFormHandlerBuilder){
       formHandlers.put(formType, chatFormHandlerBuilder);
   }
источник

HH

Human Human in pro.jvm
Я хочу чекать, что то, что добавляют через этот метод - будет одинакового типа.
источник

HH

Human Human in pro.jvm
Суть в том, чтобы потом по классу - я смог достать нужный обработчик
источник

HH

Human Human in pro.jvm
Но если убрать обертку Supplier - то все нормально. Этого я тоже не понимаю.
источник

HH

Human Human in pro.jvm
private final Map<Class<?>, ChatFormHandler<?>> formHandlers = new HashMap<>();

public <ChatForm> void addFormHandlerBuilder(Class<ChatForm> formType, ChatFormHandler<ChatForm> chatFormHandlerBuilder){
       formHandlers.put(formType, chatFormHandlerBuilder);
   }
источник

HH

Human Human in pro.jvm
/\ так все в порядке
источник

ch

central hardware in pro.jvm
источник

AG

Alexey Genus in pro.jvm
Human Human
private final Map<Class<?>, ChatFormHandler<?>> formHandlers = new HashMap<>();

public <ChatForm> void addFormHandlerBuilder(Class<ChatForm> formType, ChatFormHandler<ChatForm> chatFormHandlerBuilder){
       formHandlers.put(formType, chatFormHandlerBuilder);
   }
Ну да, так будет работать с предупреждением о raw types
источник