Имя: Пароль:
IT
Мобильный мир
Dimension в JAVA зачем он нужен?
0 TheRoofIsOn Fire
 
16.03.22
15:07
Добрый день!
Есть знатоки жабы. Есть код

import java.awt.Dimension;
import javax.swing.*;
public class TestWindow extends JFrame{
    JFrame windowFrame = new JFrame();
    

    public static void main(String[] args) {
        TestWindow windowFrame = new TestWindow();
        windowFrame.setDefaultCloseOperation(EXIT_ON_CLOSE);
        windowFrame.setSize(new Dimension(300,300));
        //windowFrame.setSize(300,300);
        windowFrame.setVisible(true);

    }

}

  в чем смысл этого Dimension, если я и так могу написать setSize(300,300) и setSize(new Dimension(300,300)) и так и так откроется окно 300 на 300.
1 Доминошник
 
16.03.22
15:13
2 Asmody
 
16.03.22
15:14
ну какбэ инкапсуляция.
это ж java

а может ты захочешь от него отнаследоваться и сделать свой класс, который тебе будет всегда рамки 3:4 рисовать?
3 TheRoofIsOn Fire
 
16.03.22
15:21
(1) о спасибо, я чего то пол инета перерыл, а эту тему не нашел.
(2) Тоже спасибо. Ну типа понятно, сделать переменную типа allSizeButton = new Dimension(3,4); allSizeWindow = new Dimension(500,600) и потом эту переменную пихать во все, если нужно размер всех кнопок поменять, просто в одном месте изменить.

зы
спасибо всем, чего то я не догадался.
4 Ненавижу 1С
 
гуру
16.03.22
15:25
(3) кроме того объекты можно сравнивать между собой, equals переопределен
5 TheRoofIsOn Fire
 
16.03.22
15:27
какой хороший у нас форум. На всяких других я бы дня 2 ответ ждал. А тут 2 минуты  и готово.
6 Конструктор1С
 
16.03.22
15:42
А зачем ты взялся копать явовый GUI? В жизни оно тебе не пригодится
7 Конструктор1С
 
16.03.22
15:46
Если по теме, очевидно java.awt.Dimension нужен чтобы не разлучать ширину с высотой, и удобно их таскать через все методы. Залезь в нутряности AWT и глянь, где оно используется
8 TheRoofIsOn Fire
 
16.03.22
15:50
(6) ну взялся и взялся, тебе жалко что ли? Я думаю, принципы везде одни и те же, тем более джава это папа всех подходов (а си это дедушка.) Поймешь тут поймешь везде.
(7) Спасибо, мы уже разобрались. Это что то типа константы, которую ты можешь назначить своему приложению и использовать для всех окон, и если тебе захочется все размеры всех форм в приложении изменить, просто меняешь в одном месте. Я этого сразу не понял, потому что когда у тебя одна форма, это не очевидно.
9 Конструктор1С
 
16.03.22
15:55
(8) это просто класс-упаковка. Константой ты уже сам его можешь сделать, завернув в обертку-синглтон и дергая из разных мест
10 Вафель
 
16.03.22
16:36
смысла сейчас изучать свинг = 0.0
11 TheRoofIsOn Fire
 
16.03.22
20:14
(10) ветка про java. Я за свинг еще не брался. А чего тебе плохого свинг сделал?
12 TheRoofIsOn Fire
 
16.03.22
20:16
тьфу прочитал свинг, как свифт. За свифт еще не брался. Какая разница на каких произведениях учить пианину, на бахе или на моцарте?
13 TheRoofIsOn Fire
 
16.03.22
20:23
а прочитал, сейчас JavaFx идет, вместо swing. да я туда глубоко погружаться и не собирался, так на базовый уровень.
14 ДедМорроз
 
16.03.22
20:46
Традиция передавать параметры через объекты пошла из Си,но там были структуры.
Просто,так быстрее и удобнее.
Кроме того,когда мы что-то добавляем,вызовы переделывать не надо.
15 Конструктор1С
 
17.03.22
04:22
(12) большая разница. Нет смысла изучать по-сути экзотическую технологию. На Java интерфейсы не пишут, за редким исключением. Если не планируешь писать на Java плагины для IDE, с вероятностью 99,9% знание awt, swing и javafx тебе не пригодятся. Лучше раскуривай работу с БД
16 Sserj
 
17.03.22
04:52
(15) Открою страшную тайну - нам всем предстоит (ну хотя это и не точно) сидеть на явавских интерфейсах. Ибо EDT это именно оно. И если вдруг захочется плагинчик наваять к этой самой EDT то придется погружаться в эти самые интерфейсы.
17 Конструктор1С
 
17.03.22
04:54
(16) edt уж скоро семь лет как edt, а пишущих плагины 1сников по пальцам можно перечесть
18 TheRoofIsOn Fire
 
17.03.22
09:04
(15) Я где то говорил, что я мечтаю на джаве кодером работать? Нет, я хочу ее просто знать. JAVA уже затем учить надо, что она ум в порядок приводит" ©М.В.Ломоносов.
19 Вафель
 
17.03.22
09:43
(18) решай лучше алгоритмические задачи
20 Конструктор1С
 
17.03.22
09:50
(18) если просто шобы знать, то лучше изучать Kotlin. Он та же Java, только с более компактным синтаксисом и немного расширенными возможностями. К тому же Kotlin все джавовые фрейиворки юзает как родные. Твой код на Kotlin

import java.awt.Dimension
import javax.swing.*

fun main() {
    val windowFrame = TestWindow()
    windowFrame.defaultCloseOperation = WindowConstants.EXIT_ON_CLOSE;
    windowFrame.size = Dimension(300, 300)
    windowFrame.isVisible = true
}

class TestWindow : JFrame()
21 Конструктор1С
 
17.03.22
09:52
+на Kotlin можно прокачать не только умение в ООП, но и умение в функциональное программирование
22 TheRoofIsOn Fire
 
17.03.22
09:58
(19) есть у меня такое в программе, но прям совсем не много. Я по второму кругу пока набираю те приложения, что уже заработали: калькулятор, теннис, угадай число, рисовалка с разлетающимися шариками. Сначала просто добился, чтобы работали, теперь разбираю те конструкции, то что с первого раза не понял. Потом буду всяких саперов, снейков и прочее пол года делать. Как наиграюсь, за сетевые приложения возьмусь, буду с гитхаба сорс качать и разбирать как это работает. Еще раз мне не для работы, я пока играюсь.
(20) По котлину меньше книг вернее вообще отсутствуют, а те которые присутствуют повествуют так "вот в джаве было так, в котлине вот так", т.е. если ты джаву не знаешь, хрен ты в этом котлине разберешься. Ну и не люблю Брина. Не хочу на его андроиде работать, так для базы.
23 TheRoofIsOn Fire
 
17.03.22
10:00
+(20) ну и к дизайну языка. Зачем писать fun? Зачем писать val? Меня эти слова паразиты раздажают. В джаве если что то со скобочками - это метод, если со скобочками с большой буквы и имеет такое же имя как класс значит конструктор, если нет ключевого слова void, значит функция, если есть значит процедура - гениально!
24 TheRoofIsOn Fire
 
17.03.22
10:02
Для меня эти мелочи, многое значат. Вот не могу смотреть на код пхп с его ?,$ в глазах рябит. В джаве скрипт, а можно так, а можно вот так, а можно стрелочные функции,  рект, редукс, херукс, потом я увидел вот такое а === somthing  и сказал, да ну вас на .!. с вашей джавой скрипт. Мне джава прям по складу ума подходит.
25 Конструктор1С
 
17.03.22
10:09
(23) это более компактное объявление переменных и методов. Без "паразитов" по-джавовски

ThisIsClassFromVeryLongName myVar = new ThisIsClassFromVeryLongName();

с "паразитами" по-котлиновски

var myVar = ThisIsClassFromVeryLongName()

к тому же var, val, насколько я знаю, появились в более поздних версиях Java
26 Конструктор1С
 
17.03.22
10:10
(22) книг по котлину полно
27 TheRoofIsOn Fire
 
17.03.22
10:12
Короче котлин хохлы писали, взяли русский и испортили.
28 Конструктор1С
 
17.03.22
10:19
(27) Kotlin писали русские, и он позволяет писать код компактнее, чем Java

На Kotlin простой класс:

class MyClass(var x: Int, var y: Int)


этот же класс на Java

public class MyClass {

    private int x;
    private int y;

    public MyClass(int x, int y) {
        this.x = x;
        this.y = y;
    }

    public int getX() {
        return x;
    }

    public void setX(int x) {
        this.x = x;
    }

    public int getY() {
        return y;
    }

    public void setY(int y) {
        this.y = y;
    }
}
29 TheRoofIsOn Fire
 
17.03.22
10:22
(25) Как раз тут нет паразитов сначала пишешь что за тип переменной, объявляешь переменную, инициализируешь переменную или вызываешь конструктор. Тем более, а как быть если пишешь родительский класс, а вызываешь конструктор дочернего например Animals cat = new Cat(); Animalc god = new Dog(); ?
(26) код должен быть читаемым, а не таким как какому то хохлу из интелиджи айдиа кажется. И иде ихнее жидовское не нать, эклипс наше все.
30 TheRoofIsOn Fire
 
17.03.22
10:23
ладно мне в холиварах участвовать некогда, пойду работать.
31 TheRoofIsOn Fire
 
17.03.22
10:29
class MyClass(var x: Int, var y: Int) - ну и как это учить, если ты например не знаешь, что такое конструктор, геттер и сеттер? А может я не просил их геттер и сеттер делать, может мне не надо. Я же говорю, взяли хороший язык и весь покомкали.
32 Вафель
 
17.03.22
10:30
(31) так можно же переопределить если нужно
33 Конструктор1С
 
17.03.22
10:36
(29) Kotlin умеет всё то же, что и Java, в ряде случаев он позволяет писать более компактно, чем Java. Если нужно явно указать класс, это легко делать

val cat: Animals = Cat()
val god : Animals = Dog()

как по мне, так куда аляповатее выглядит два раза писать имя класса по-джавовски, чем один раз написать var и один раз имя класса. И говорю же, var/val завезли в более поздние версии Java

(31) что там учить? Один раз понять и запомнить
34 Вафель
 
17.03.22
10:38
Ну мог котлин и не самый лучший язык для обучения с 0
35 Ненавижу 1С
 
гуру
17.03.22
10:38
(29) "хохлы", "жидовское" - вы где это все берете?
36 TheRoofIsOn Fire
 
17.03.22
10:39
(32) Ну тут как обычно, с джавы ты на котлин спокйно пересядешь, потому что котлин - это скомканная джава. А с котлина на джаву нет. С эклипса, ты на идею перейдешь без проблем, а с идеи на эклипсу нет. В общем для обучения и понимания java  лучше. Тем более ни на том ни на этом я работать не собираюсь, так для души.
(33) как ты поймешь, если в джаве с этим не разобрался. Не я бы не понял даже о чем Вы говорите, если бы в джаве с этим не разобрался. Котлин - это только андроид, а джава это все. Поэтому я пока на джаве останусь.
37 TheRoofIsOn Fire
 
17.03.22
10:39
(35) это военный юмор.
38 novichok79
 
17.03.22
11:04
да уж, awt, не думал шо этим кто-то пользуется, кек.
если хочется гуя в джавке - имхо, javafx гораздо круче, чем swing и awt.
более чем полностью то что пишется на джавке - финтех + spark, куча данных и все такое.
фронт там не понадобится почти никогда.
39 eTmy
 
17.03.22
11:05
дык Российский же программист руководил разработкой котлина (:
40 eTmy
 
17.03.22
11:07
конструкции var и val в джава тоже есть, рекомендую более подробно изучить для чего они нужны, а так же для чего изобрели котлин)
41 TheRoofIsOn Fire
 
17.03.22
11:11
(39) я же написал уже, что это солдатский юмор.
(40) Котлин изобрели масоны(это тоже юмор), чтобы нагадить Орклу, с которым гугл 100500 лет судился.
42 ДедМорроз
 
18.03.22
10:17
Кстати,по поводу объектов.
В java объекты живут в отдельной памяти,и передача ссылки на объект также оправдана,как и в Си,когда мы передаем указатель.
43 ДедМорроз
 
18.03.22
10:25
Еще одна важная особенность - вместо объекта можно передать null,считая,что параметр не задан,а вместо int передать null нельзя,можно только какое-то специальное значение зарезервировать под незаданный параметр.
И еще,использование объектов-это некоторый аналог передачи параметров по имени,что мало в каких языках поддерживается.
44 TheRoofIsOn Fire
 
18.03.22
14:40
(43) Спасибо за участие. Ох, там много такого, что в других языках не используется. Вчера начал про лямбды смотреть, заснул. Проснулся, включил про модули, опять заснул и уже до утра. Про лямбды я хоть что то понял, а про модули вообще ничего, заснул на микросервисах.
45 Конструктор1С
 
18.03.22
15:40
(44) модули это что-то похожее на пакеты, только крупные. Модули как бы делят приложение на несколько подприложений
46 ДедМорроз
 
18.03.22
21:13
(44)во многих языках есть аналоги.
Для лямбды просто нужен указатель на функцию.
Если его нет,то можно сиастерить через eval,просто передав исполняемый код.
Модули - это возможность в одном коде использовать другие файлы.
Если бы не Си с ее include,все бы могло быть совершенно по-другому.

К сожалению,java не позволяет собирать код на лету,поэтому половина вопросов снимается сразу.
Зато,в java многопоточность из коробки.
47 Конструктор1С
 
19.03.22
08:55
(46) лямбдя и в 1с обещают завести
https://wonderland.v8.1c.ru/blog/anons-novykh-vozmozhnostey-yazyka-1s-ispolnitel/
только не в платформу, а в новые Исполнитель и Элемент. Судя по описанию, будут аналогами лямбдам в Java/Kotlin
48 TheRoofIsOn Fire
 
19.03.22
10:17
(47) Мне одному кажется это бредом и какими то предсмертными конвульсиями? Мы зачем пришли в 1С? За баблом и простотой. Сейчас тут ни бабла ни простоты. Нуралиев стар и платформа все хуже. ЕРП - это вообще какой то постоянно подвисающий гребаный стыд.
49 TheRoofIsOn Fire
 
19.03.22
10:21
1С ный язык был калькой с visual basic и  в принципе был не плох, чтобы "прям завтра" начать одинэсить, а теперь это какое то крокодилище невнятное.
50 acht
 
19.03.22
10:22
(48) А когда ты спишь под лекции о других языках - это ради бабла или простоты?
51 TheRoofIsOn Fire
 
19.03.22
10:25
(50) я че не имею права в 12 часов ночи спать пойти? Так включил, думал там на 5 минут, а там на час.
52 acht
 
19.03.22
10:51
(51) Вот я давно говорил, что тебе нужен не результат обучения, а процесс. А сейчас убеждаюсь, что даже не сам процесс, а обсуждение процесса...

Тебе ЕСПЧ запретил заранее смотреть на продолжительность ролика в видеоплеере?
53 Krendel
 
19.03.22
10:57
(52) А ты сомневался?
54 acht
 
19.03.22
11:09
(53) > сомневался
Надеялся
55 TheRoofIsOn Fire
 
19.03.22
16:22
(52) "Вот я давно говорил, что тебе нужен не результат обучения, а процесс." - Вы так говорите, как будто процесс обучения и обсуждение процесса это что то плохое. А что по вашему результат? Вот я набрал и разобрался как работает консольное приложение угадай число, потом GUI калькулятор, потом гуи теннис - многопоточный + прослушивание мыши и клавиатуры, приложение шифр цезаря консольный и гуи, рисовалка и анимация, сейчас по второму кругу набираю, разбираюсь в тех конструкциях что не разобрался раньше, все приложения работают - это результат? Или что результат? Устроится куда то джуном? Нахер мне с постановщика задач в 1С идти кодером джуном? Это хорошо что нравится процесс, все эти "на результат" выдыхаются через 2-3-5 лет, а потом тут на форуме токсят. А те кому нравится процесс, занимаются этим всю жизнь по кайфу.
"А сейчас убеждаюсь" - убедился? Я разочаровал твои надежды? Ты на меня рассчитывал? Ну прости.
"Тебе ЕСПЧ запретил заранее смотреть на продолжительность ролика в видеоплеере?" - смотрел я длительность ролика, решил что за 10 минут пойму смысл, а дальше решу если надо то буду смотреть, если нет то буду или спать или смотреть. Да в первые 10 минут, смысл понял, где мне нужны подписки на события и микросервисы, пока не решил. А значит, заучивать это смысла нет, потому что забуду без применения через неделю, потому и спал, ну и опять же вечер на дворе, че бы не поспать.
(53) Ты ты че тут возмущаешься?
(54) теперь убедился и больше не будешь токсить?
56 acht
 
19.03.22
16:48
(55) Ты прямо как Паша, не можешь поддерживать стабильность выбраной личности:

(51) > включил, думал там на 5 минут
(55) > решил что за 10 минут пойму смысл,
(55) > в первые 10 минут, смысл понял,
(44) > Про лямбды я хоть что то понял, а про модули вообще ничего
57 Вафель
 
19.03.22
16:51
(56) так это скорее всего он и есть.
Ты не заметил например, резака больше нет
58 Конструктор1С
 
19.03.22
17:11
(48) если ты гоняешься за простотой, программирование это не твое
59 acht
 
19.03.22
17:34
(57) Да, есть такое подозрение. Вдобавок, абсолютно все палятся на словарном запасе, манере речи и орфорграфии. Поэтому добиться от собеседника потока речи, неважно какого содержания - первоочередная задача =)
60 Вафель
 
19.03.22
17:37
(59) я склоняюсь к тому, что это не игра, а реально разные субличности
61 TheRoofIsOn Fire
 
19.03.22
21:51
(56) ну разобрался я с этими лямбдами
создаем интерфейс с одним методом.
public interface GeneralEvent {
    void EventHappend();

}
создаем класс слушатель 1
public class Subscriber1 implements GeneralEvent{

    Override
    public void EventHappend() {
        System.out.println("событие подпичика 1");
        
    }
    

}
создаем класс активизирующий основное событие
import java.util.ArrayList;
import java.util.List;


public class GeneralEventer {
    
    private List<GeneralEvent> subscribers = new ArrayList<>();

    public void addsubscribers(GeneralEvent sub) {
        subscribers.add(sub);
    }

    public void removesubscribersr(GeneralEvent sub) {
        subscribers.add(sub);
    }

    public void generalEventHappend() {
        System.out.println("основное событие произошло");
        //вызываем события подпичиков
        for (GeneralEvent sb: subscribers)
            sb.EventHappend();
    }// public void switchOn()
    
    

}
создаем объект инициализирующий событие, добавляем подписчиков и анонимных подписчиков

public class Program {

    public static void main(String[] args) {
        GeneralEventer ge = new GeneralEventer();
        Subscriber1 sb = new Subscriber1();
        //добавляем объект подписчика на событие
        ge.addsubscribers(sb);
        //добавляем анонимный объект подписчик
        ge.addsubscribers(() -> System.out.println("событие анонимного подписчика"));
        ge.generalEventHappend();

    }

}
результат выполнения программы
https://prnt.sc/FochQjpKHEY4
62 TheRoofIsOn Fire
 
19.03.22
21:53
+(61) надеюсь тебе полегчало. А забыл тебе же наср@ть ты сюда погадить зашел.
63 ДедМорроз
 
19.03.22
22:04
Игтерфейсы появились из-за того,что нет множественного наследования.
Как бы,каждый интерфейс - это таблица функций,которую можно передавать кому-то для вызова.
64 TheRoofIsOn Fire
 
19.03.22
22:12
(59) специально для тебя записал видео написанной мной программы. https://disk.yandex.ru/d/ix5T4_vmVNZ6nA
65 TheRoofIsOn Fire
 
19.03.22
22:13
(63) спасибо ДедМороз, ты тут самый адекватный.
66 Ненавижу 1С
 
гуру
19.03.22
22:30
(63) моё мнение, что лучше смотреть на интерфейс, как на тип данных, предоставляющий определённое поведение. А множественное наследование и его реализация в яп это вторично
67 acht
 
20.03.22
02:21
(64) Не грузится: https://ibb.co/gM2GS4t
А выложи, на ютуб, что-ли. Посмотрим, какой ты программист.
68 acht
 
20.03.22
02:47
(63) > Игтерфейсы появились из-за того,что нет множественного
Интерфейсы-то появились как раз чтобы отвязать реализацию от объявления. Причем эта проблема старше вашего любимого ООП, бабахнуло еще в множественных #include чистого C. Но вы продолжайте, продолжайте...
69 Sserj
 
20.03.22
05:05
(61) Нельзя так делать. Это классическая и самая распространенная причина утечек памяти.
У тебя есть класс GeneralEventer со списком слушателей subscribers.
Ты передаешь этому классу фактически анонимный безымянный класс в виде лямбды. Это лямбда-класс добавится в список subscribers.
И теперь ты уже никак не сможешь сделать отписку от события. Т.е. у тебя нет никакой публичной возможности удалить этот лямбда-класс из списка subscribers.
Теперь если даже сборщик мусора удалит класс который подписался на событие (в твоем случае это какой-то экземпляр класса Program). Лябмда-функция все равно останется в списке подписавшихся и будет вызываться при событии и у тебя нет никакой ссылки на нее чтобы удалить из списка подписок.
70 Конструктор1С
 
20.03.22
06:07
(61) если честно, х...ню ты какую-то написал
71 Конструктор1С
 
20.03.22
06:09
(63) нет, у интерфейсов совсем другое предназначение. В Java интерфейсы используются чтобы избежать зависимостей от конкретных классов
72 TheRoofIsOn Fire
 
20.03.22
09:26
(69)(70) пример отсюда https://www.youtube.com/watch?v=DNC6Lknn2AE . Ну вы блин даете, я уже думал, если  работы уволят, пойду к ним на курсы.
73 TheRoofIsOn Fire
 
20.03.22
09:29
на самом деле не пошел бы, лучше книгу бы прочитал https://codernet.ru/books/java/lyambda-vyrazheniya_v_java_8_richard_uorberton/
74 TheRoofIsOn Fire
 
20.03.22
09:31
Лектор отсюда примеры брал, например найти средние значения в списках
Нахождение среднего числа произведений во всех аль­бомах из списка puЫic douЫe averageNumberOfTracks(List<Album> albums) { return albums.stream() .collect(averagingint(album ->  album.getTrackList() .size()))
75 TheRoofIsOn Fire
 
20.03.22
09:38
(69) вот пожалуйста первый пример из книжки button.addActionListener(event -> System.out.println("Кнопка нажата"), к кнопке привязывается анонимный класс с методом. Короче знатоки, сначала книжку прочитайте, потом тут советуйте.
76 TheRoofIsOn Fire
 
20.03.22
09:50
на самом деле ничего сложного тут нет ни в анонимных классах ни в лямбдах. Допустим на кнопку нужно повесить функцию. Функция в джаве не может висеть в воздухе, а должна принадлежать классу, даже нафиг не нужному.
Можно написать по старому
btnCodeEncode.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                           System.out.println("кнопка нажата")
            }

а можно с лямбдами
btnCodeEncode.addActionListener(e ->  System.out.println("кнопка нажата")) просто новый метод записи одного и того же. Как по мне так мне этот синтаксический сахар не нужен, он затрудняет обучение и понимание.
77 Конструктор1С
 
20.03.22
12:38
(72) только заставка видео уже многое проясняет. Привузовский препод делал. Считай что неокрепший джун
78 Sserj
 
20.03.22
14:48
(75) Поверь на слово - читали. Много, много разных книжек. Много, много тысяч строк писали, наступали на грабли, кололись и жрали кактусы дальше.
Все это конечно замечательно работает в типичных книжных хелловордах. Но на примере того-же (65) твой GeneralEventer не будет жить только в методе main, он же потому и называется General. Это какой-то объект живущий совсем в другом месте, может даже какой-то статический, созданный при запуске приложения и умирающий только вместе главным процессом.
И вот в этом каком-то совсем другом объекте, мало относящемся к твоему классу и методу будут накапливаться вот такие вот маленькие лямбдочки.
Поэтому есть золотое правило - Всегда отписывайся явно от подписок, если они больше не нужны.
79 Конструктор1С
 
20.03.22
15:24
(76) лямбды в жаву завезли не ради слушателей. Это лишь частный случай использования лямбд

new ActionListener() - так ты через new ИмяИнтерфейса() создаёшь анонимный класс, у которого будут методы из интерфейса

() ->  {чего-то там} - так ты создаешь как бы анонимный метод, который можно закатать в переменную и передавать в другие методы
80 ДедМорроз
 
20.03.22
15:59
Есть такая вещь - обратный вызов.
Это когда мы чужому ранее написанному коду передаем указатель на свою функцию,которую он вызывает в определенных случаях для того,чтобы можно было выполнить дополнительные действия.
Обычно,так работает механизм событий,но можно также и обходить цикл,используя функцию- итератор.
А все приблуды в языках созданы для того,чтобы сделать этот обратный вызов удобнее и разумнее.
81 TheRoofIsOn Fire
 
20.03.22
16:40
(77) был я у них на сайте. Там чтобы только джаву пройти, несколько курсов по 50-150 тыр каждый, т.е. чтобы там поучится люди по 500косарей отдают. Т.е. он тебе примеры из книжек даст за пол лимона. Хотя рассказывает хорошо, мне понравилось.

(78) Ну ок. Я так понял, это пример для понимания, а не для того, чтобы так писать. Мне эти лямбды, пока до лампочки, надо с java core сначала разобраться, а потом уже в расширения языка и в "синтаксический сахар" лезть.
(79) на сколько я понимаю, эти лямбды не хотели долго включать и в принципе правильно. Потому что код пишется 1% времени, а 99% времени он читается и понимается. А понимать лучше, когда кода больше, т.е. чем больше кода, тем более развернутая инструкция для человека. А компилятору пофигу, что там написано, он хоть "обычный" код хоть лямбда выражения в один и тот же байт код переведет, ему пофигу.
82 Конструктор1С
 
20.03.22
17:53
(81) ты же знаешь разницу между зарплатой препода в универе и зарплатой сеньора-джависта? В лучшем случае учить тебя будет посредственный специалист, когда-то там как-то там занимавшийся java-разработкой. А по традициям универов преподавать будет теоретик, не выросший дальше университетских лабораторок. Да, хорошо говорить они умеют, этому их натаскивают, теорию знают, а вот с практикой беда
83 Вафель
 
20.03.22
18:08
(82) вот только ты не учитываешь чтобы учить нулевых нужны не сеньорские знания, а педагогический талант
84 Вафель
 
20.03.22
18:11
Ведь сеньор - это что? Он умеет взять задачу и найти способ как ее решать.
И такое умение передать другому - это практически нереально. Да и новичек вряд ли сможет его перенять. Те не отдающий ни принимающий не готовы к передаче таких знаний
85 Конструктор1С
 
20.03.22
18:22
(83) спасибо, кэп, только нулевых нужно сразу учить правильным вещам. Как надо делать, и как не надо делать. А "чувство правильности" бывает только у опытных специалистов, хорошенько поварившихся на реальных проектах
86 Вафель
 
20.03.22
18:25
(85) правильные вещи - определяются самой программой обучения, а не чувствами правильности
87 Вафель
 
20.03.22
18:27
(86) те берешь хороший учебник - делаешь на его основе программу. И практически любая обезьянка сможет обучать по ней. А вот чтобы хорошо обучать нужно  уметь понимать почему же новички не одупляют ничего. Уметь рассказать одно и тоже разными словами - те это и есть педагогический талант
88 Конструктор1С
 
20.03.22
18:29
(86) правильность учебной программы определяется вузовскими чиновниками, а не какими-либо реальными кейсами, зарекомендовавшими себя на практике
89 Вафель
 
20.03.22
18:32
(88) вроде по программированию куча курсов, где не требуется согласования с чиновниками.
Правда и курсы все равно плохие у большинства
90 Вафель
 
20.03.22
18:33
(88) кейсы зарекомендовавшие себя на практике называются паттернами. Их вполне можно преподавать и без коммерческого опыта. Ибо они все описаны: зачем и когда
91 Конструктор1С
 
20.03.22
18:36
(87) ну разжуют для тебя то, что можно узнать из документации и множества книг, но программистом тебя это не сделает. В чём отличие новичка от профессионала? Новичек пишет код лишь бы заставить его работать, выполнять задачу и не падать на ошибках. С вероятностью в 99% на выходе будет говнокод. Для профессионала заставить код выполнять задачу это только верхушка айсберга. Он ещё позаботится, чтобы код был удобочитаем для других, соответствовал стандартам, хорошо вписывался в существующую архитектуру etc. Преподы расскажут основы, научат как заставить код выполняться, и на этом mission complete
92 Вафель
 
20.03.22
18:37
(91) программистом никто тебя не сделает. Только ты сам. Поэтому такой и спрос. Иначе бы пачками готовили бы
93 Конструктор1С
 
20.03.22
18:38
(90) паттерны это далеко не всё, что применяется в джавовом программировании. И тоже существует масса тонкостей, когда паттерны стоит применять, когда не стоит
94 Вафель
 
20.03.22
18:40
(93) паттерны и антипаттерны - это и есть качество кода
95 Вафель
 
20.03.22
18:41
Архитектура приложения - это уже совсем другая история. Таких курсов я вообще не видел
96 Вафель
 
20.03.22
18:41
Хотя книги есть и весьма неплохие
97 Конструктор1С
 
20.03.22
18:42
(92) на сегодня довольно успешной формой обучения является менторинг. Это когда опытный специалист настаскивает джуна, носом натыкает в говнокод в случае чего. Преподы-теоретики в менторы никак не годятся
98 Вафель
 
20.03.22
18:45
(97) менторинг возможен только на рабочем месте уже. Курсов такого формата я не видел
99 Конструктор1С
 
20.03.22
18:50
(94) у качества кода много аспектов

(95) так приходя на реальный проект новичок должен понимать: почему архитектуру делят на слои, почему бизнес-логика идет верхним слоем, как правильно внедрять зависимости, как прокатывать данные между слоями и вот это всё. Ему с этим предстоит работать. Он будет не просто писать код, а вписывать свой код в существующее приложение, в существующую архитектуру. Только в лабораторных задачках код постоянно начинается с чистого листа, на грешной земле приходится работать в окружении существующего кода
100 Конструктор1С
 
20.03.22
18:52
(98) есть такие курсы. По крайней мере у здоровяков типа майлрушки и яндекса. Там преподаватели и менторы практикующие прогеры, а студенты пилят проектики, приближенные к реальным
101 TheRoofIsOn Fire
 
20.03.22
19:11