847

Помогу бесплатно: Java и SQL

Помогу советом изучающим Java и SQL или начинающим программистам.


Не решаю задачи, не делаю ДЗ. Только объясняю что, как и почему устроено.


Рейтинг в топку, просто хочу помочь.

Помощники

243 поста785 подписчиков

Правила сообщества

Нельзя обсуждать Политику.
Ругаться и оскорблять.

Вы смотрите срез комментариев. Показать все
0
Автор поста оценил этот комментарий

Есть несколько вопросов на которые я не смог найти адекватного ответа. Я джаву изучаю всего пару месяцев, так что простите если где-то глупость спросил.

1. Type alias. Я могу в С++ написать using MyType = std::vector<std::pair<std::string, MonstrousSuperClass>> и дальше везде использовать MyType, что заметно повышает читаемость кода. Есть ли что-то аналогичное в джаве?

2. Можно ли как-то сделать константные методы? Хочу написать интерфейс, в котором будет чётко видно, что некоторые методы не должны менять состояние объекта (т.к. я на это опираюсь при реализации некоторых алгоритмов, работающих с объектами этого типа).

3. Есть ли какой-то аналог декораторов из питона? Хочу, например, сделать мемоизацию функции (т.е. обёртку, которая будет запоминать с какими аргументами вызывали функцию и в следующих вызовах сразу возвращать сохранённый результат для "запомненного" набора аргументов). Ну или хочу сделать обёртку для автоматического ретрая в случае некоторых исключений.

4. Если я не собираюсь заниматься мобильной разработкой - какие есть у джавы преимущества над сочетанием "питоном + С++"? Это не попытка начать холивар, а вполне искреннее любопытство, т.к. пытаюсь понять, насколько мне вообще имеет смысл погружаться в этот язык.

раскрыть ветку (4)
1
DELETED
Автор поста оценил этот комментарий

1. Кажется нет такой возможности. Только экстендить классы разве что, что-нть типа такого:


class MyType extends ArrayList<Map.Entry<String, MonstrousSuperClass>> 


2. Сейчас можно писать реализации методов в интерфейсах начиная чтоли с 8-й джавы, в интерфейсах нет полей и соответсвенно состояния, потому такие методы не способны менять состояние напрямую, а только через вызов других методов. Фик знает это то что вам надо или не.


3. Декораторы есть - это т.н. прокси видимо, java.lang.reflect.Proxy идет "из коробки", но имеет серьезные ограничения - можно только интерфейсы проксировать. Вообще прокси это основа AOP, контекстов и циклических зависимостей (зло!) в CDI, потому разработаны способы проксировать классы с помощью генерации байткода на лету, иными словами либа для вашего класса Foo сгенерит класс FooProxy который унаследован от Foo. Либы такие стопудово есть, прокси я видел, но по названиям либов не порекомендую (ну разве что asm глянуть и кто ей пользуется), часто CDI бины проксируют чтоб все вызовы к бину проходили через проксю и она бы отвечала за вызов интерсепторов и настройку контекста.


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


4. А фик его знает, есть какая никакая типизация, сборка мусора, приятный синтаксис и богатая инфраструктура - тьма либов и тулов и документации. Джава не супер высокоуровневая, но и не слишком низкоуровневая, всего в меру.


Но джава контролируется американской корпорацией в сложившихся условиях видимо надо искать инструменты не подконтрольные западным правительствам. Инвестируете в разработку на джаве, а вам перекроют доступ к ней, ну и смысл?

раскрыть ветку (2)
0
Автор поста оценил этот комментарий

Во что же тогда инвестировать?

раскрыть ветку (1)
0
DELETED
Автор поста оценил этот комментарий

Вот бы знать. Как раз в С/С++ и пайтон возможно, я не знаю на самом деле, в идеале надо иметь свой национальный яп и вм, ну или во что-то что развивается международным сообществом, а не конкретной американской конторой.

1
Автор поста оценил этот комментарий

1) Насколько я знаю, такого нет.

2) Возможно Вам поможет использование аннотаций.  То есть создаёте свою аннотацию и помечайте ей те методы, которые не должны менять состояние объектов.

Возможно поможет использование final перед описанием параметров методов. Это запретит менять входящие объекты, но не их содержимое.

3) С питоном знаком поверхностно, не очень понимаю как должно работать.

4) Думаю, что особых преимуществ нет. Мобильная разработка под андройд, наверное основное преимущества Джавы, как языка для изучения. Сочетание Pyton и C++ - очень хороший вариант для широкого круга задач.

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества