Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
FooFactoryFactory foo = new FooFactoryFactory();
vs:
var foo = new FooFactoryFactory();client.sendRequest(request, new ResponseCallback() {
@Override
public void onResult(Object object) {
currentActivity.runOnUiThread(new Runnable() {
@Override
public void run() {
currentActivity.title.setText("done!");
}
});
}
});var responseObj = await SendRequest(request);
//runOnUiThread не нужен т.к. await вернет первоначальный контекст
currentActivity.title.Text = "done"await client.SendRequest1(request1);
currentActivity.title.Text = "1/3";
await client.SendRequest2(request2);
currentActivity.title.Text = "2/3";
await client.SendRequest1(request3);
currentActivity.title.Text = "3/3";client.sendRequest1(request1, o -> currentActivity.runOnUiThread(() -> {
currentActivity.title.setText("1/3");
client.sendRequest2(request2, o -> currentActivity.runOnUiThread(() -> {
currentActivity.title.setText("2/3");
client.sendRequest3(request3, o -> currentActivity.runOnUiThread(() -> {
currentActivity.title.setText("3/3");
}));
}))
}));GroupConversation.GroupConversationParticipant participant = new GroupConversation.GroupConversationParticipant();var participant = new GroupConversation.GroupConversationParticipant();GroupConversationParticipant, получитеGroupConversationParticipant participant = new GroupConversationParticipant();return :DCollections.singletonList, и всё равно придётся менять тип.Map<String, ArrayList<String>>), и одно исправление во внутреннем методе требует замены кучи типов. Гораздо проще всегда по умолчанию использовать интерфейсы и не думать об этом. Конкретный тип может потребоваться, только в очень специфических случаях (например, анализ дампа памяти показал, что ArrayList.trimToSize вызвать нелишне).List<String> list = new ArrayList<String>;persons.stream().filter(p -> p.getAge() > 18).limit(100).collect(Collectors.toList());"select top(100) * from persons where age > 18".filter(mySet::contains))? Всё равно придётся помнить, что можно делать и чего нельзя. Java очень консервативна в плане адаптации синтаксиса под конкретные частные задачи. Тут ни перегрузки операторов, ни даже поддержки регекспов на уровне /синтаксиса/. Зато читать код и анализировать сторонними тулзами гораздо легче, чем разбираться, SQL-запрос тут под капотом или нет.Java появилась в чрезвычайно важный момент для истории программирования. До тех пор в разработке ПО царствовали три языка: Fortran в научных вычислениях, COBOL в бизнесе и C (С++ тогда только начинал распространяться) во всех остальных проявлениях коммерческого программирования.Что за чушь? Какой нафиг COBOL и Fortran в 1995 году? В то время по планете яростно шагал Delphi, был на подходе C++ Builder. Корпоративный рынок уже принадлежал Microsoft а с ним и MS Visual C++ c MFC впридачу.
Java: 20 лет инноваций