Рубрика «kotlin» - 5

Получение generic-типа в runtime - 1

В Java 5 появились generic-типы, а вместе с ним и концепция type erasure, которая буквально означает стирание информации о generic-типе после компиляции. Действительно, во многих случаях это просто синтаксический сахар, помогающий писать типо-безопасный код на уровне компиляции, и в runtime с такими типами работать нельзя. Например, невозможно получить тип T внутри ArrayList<T>, поэтому он в своей реализации создает массив Object[], а не T[] для хранения элементов.

Однако, в ряде случаев это очень даже возможно. Например, можно объявить поле

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.BeanPostProcessor;
...
@Autowired
private Set<BeanPostProcessor> beanPostProcessors;

и spring в него заинжектит все объекты контекста, которые реализуют интерфейс BeanPostProcessor.

Можно написать и так:

import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
...
List<String> strings = new ObjectMapper()
     .readValue("[1, 2, 3]", new TypeReference<>() {});
// все элементы strings - строки (не Integer и не Long)
List<Integer> ints = new ObjectMapper()
     .readValue("[1, 2, 3]", new TypeReference<>() {});
// все элементы ints - Integer (не String и не Long)

Можно написать даже так:
Читать полностью »

Изображение взято отсюда: https://lightrun.com/java/16-top-java-communities-forums-and-groups-the-ultimate-guide/
Изображение взято отсюда: https://lightrun.com/java/16-top-java-communities-forums-and-groups-the-ultimate-guide/

Лирическое вступление

Данная инициатива - не реклама, пиар, прикол или что-либо, имеющее под собой злой умысел. Это именно инициатива, цель которой собрать под одной "крышей" таких же маслят в Java, как я, и помогать в обучении.

Читать полностью »

Рефакторинг приложения с десятилетним легаси за три месяца. Опыт Яндекс Музыки - 1

Однажды ты просыпаешься и понимаешь: избыточность компонентов и рассинхронизация в твоём приложении начинают вредить пользователям. Однажды ты смотришь на написанное давным-давно ядро, плачешь горькими слезами, и приходит это некомфортное, но вместе с тем немного соблазнительное ощущение — что рефакторинг назрел. Добро пожаловать на экскурсию по рефакторингу Музыки, начиная с ресёрча и заканчивая эксплуатацией! Я покажу вам реальный код и постараюсь в деталях вспомнить, как мы формировали требования к механизмам и разрабатывали их, рисовали у себя в голове и в коде границы ядра, по одной переделывали очереди и внедряли то, что получилось, в SDK.
Читать полностью »

Привет, Хабр! Каждую неделю, в своем телеграм-канале Mobile Native, я публикую дайджест с интересными и полезными материалами (новости, статьи, инструменты, библиотеки и т.д.) для мобильных разработчиков. Решил попробовать публиковать эту рубрику и на Хабре. Посмотрим, что из этого получится.

Android 🤖

• Dependency Inversion Principle: How Google Developers write code
• Как мы используем фича-флаги в мобильном приложении QIWI Кошелек
Читать полностью »

Всем привет, меня зовут Антон, и как вы могли уже догадаться из названия, решил я рассказать о своих попытках вкатиться в робототехнику, а в частности о своем дроне из Raspberry Pi и ESP32. В конце статьи я приложил видео со схожим содержанием, кому больше заходит текст, читайте дальше.

Предыстория

На начало этой истории я работал веб-разработчиком (react, typescript и тд), немного щупал плюсы, из навыков работы с электроникой - мог спаять порванные наушники.

На зп я не жаловался, но периодически меня посещали мысли о том, что мой код не производит никакого эффекта на реальный мир.

Читать полностью »

Всем привет! Мы — Почтовые Технологии или просто Почтатех. Разрабатываем сложные цифровые продукты Почты России. Помогаем ей стать удобнее, быстрее, качественнее и технологичнее для вас. 

9 апреля приглашаем middle/senior-разработчиков, пишущих на Java/Kotlin, на One Day Offer — приходите и получите оффер от Почтатеха за день! Он пройдет онлайн с 10:00 до 20:00 по московскому времени.

Читать полностью »

Дисклаймер: я не являюсь разработчиком из JetBrains, а жаль, и поэтому в статье и в коде могут быть и скорее всего есть неточности и ошибки.

Часть 1

  • Введение

  • Предусловия

  • Создание основы языкового плагина

  • Создание PSI-дерева

  • - Лексер

  • - Парсер

  • Аннотаторы

  • Подсветка скобок

Часть 2

Я начал писать статьи задолго до сегодняшних событий, и не уверен, что статьи еще могут быть актуальны (так как не уверен уже, что будет завтра), но не охота, чтобы усилия пропали совсем зря.

Дисклаймер: я не являюсь разработчиком из JetBrains, поэтому в статье и в коде могут быть и скорее всего есть неточности и ошибки.

Краткое оглавление

Часть 1

Всем привет! Меня зовут Алишер, Android-разработчик уже как 1,5 года. За это время у меня появился шаблонный (Boilerplate) проект в котором у нас базовая архитектура приложения. А в этой статье я расскажу, и покажу как я ел Single Activity Architecture с Fragment'ами и Navigation Component.

Для общего понимания необходимо прочитать отличную статью про Single Activity, Лицензия на вождение болида, или почему приложения должны быть Single-Activity, и для дополнения части Navigation Component-дзюцу.

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js