JavaRush/Java блог/Архив info.javarush/Уровень 23: план уровня и доп. материалы
hubert
41 уровень

Уровень 23: план уровня и доп. материалы

Статья из группы Архив info.javarush
участников
Уровень 23: план уровня и доп. материалы - 1План уровня:
  • final и другие ключевые слова java
  • Внутренние классы
  • Внутренние статические классы
  • Внутренние анонимные класса, примеры
Курс JavaЧто еще можно посмотреть на досуге: Ответы на вопросы к собеседованию по теме уровня Всё про final читаем в 7 главе Философии Java Внутренние классы подробно описаны в 10 главе Философии Java
Нашли классную ссылку к материалу данной темы? Добавьте ее сюда в виде комментария. Возможно, именно Ваша ссылка поможет другому человеку стать программистом и улучшить свою жизнь! Вернуться к обучению java онлайн на JavaRush
Комментарии (28)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Nicson777
Уровень 27
21 сентября 2016, 14:23
Достаточно наглядно: TreeMap vs HashMap
www.youtube.com/watch?v=85a-sHg5otU
Nicson777
Уровень 27
21 сентября 2016, 13:37
Что подразумевается под «учиться гуглить»?
Немного поставил в тупик вопрос про «отправка email из java программы».
Нашёл документацию об этом, но чтобы протестировать это, нужно разобраться с библиотекой javax…
Или суть в том, чтобы научится находить нужный ответ в google в необходимой ситуации?
Если кто смог отправить email таким образом, отпишитесь)
imp
Уровень 31
17 октября 2016, 12:36
javax это явно не самый простой способ отправки
самый простой имхо через сокеты ( то есть общение напрямую с смтп сервером )

public class MailTest {
static PrintStream ps = null; // посылка сообщений
static DataInputStream dis = null; // получение сообщений
public static void send(String str) throws IOException
{
ps.println(str); // посылка строки на SMTP
ps.flush(); // очистка буфера
System.out.println(«Java sent: » + str);
}
public static void receive() throws IOException
{
String readstr = dis.readLine(); // получение ответа от SMTP
System.out.println(«SMTP respons: » + readstr);
}
public static void main (String args[]) throws IOException, InterruptedException {
String HELO = «HELO gazprom.ru»;
String MAIL_FROM = «MAIL FROM: user@gazprom.ru »;
String RCPT_TO = «RCPT TO: pikselnsk@yandex.ru »;
String DATA = «DATA»; // начало сообщения
String FROM = «from: user@gazprom.ru»;
String SUBJECT = «subject: tema »;
String BODY = «Hello my friend! Java sent this!»;
String END = ".";
Socket smtp = null; // сокет SMTP
try { // заметка: 25 — это стандартный номер порта SMTP
smtp = new Socket(«mx.yandex.ru», 25);
OutputStream os = smtp.getOutputStream();
ps = new PrintStream(os);
InputStream is = smtp.getInputStream();
dis = new DataInputStream(is);
}
catch (IOException e)
{
System.out.println(«Error connection: » + e);
}
try { // скажем SMTP helo
receive(); // получение ответа SMTP
send(HELO);
receive(); // получение ответа SMTP
send(MAIL_FROM); // посылка на SMTP
receive(); // получение ответа SMTP
send(RCPT_TO); // посылка адресату SMTP
receive();
send(DATA); // начинается посылка на SMTP
receive(); // получение ответа SMTP
send(FROM);
send(SUBJECT);
send(BODY); // по
remain4life
Уровень 41
29 апреля 2016, 13:25
Народ, немного не разберусь в терминологии, у Эккеля написано, что
… Определение класса может размещаться внутри определения другого класса. Такие классы называются внутренними (inner class)…
… Если связь между объектом внутреннего класса и объектом внешнего класса не нужна, можно сделать внутренний класс статическим (объявить его как static). Часто такой класс называют вложенным (nested)...


Однако в рекомендованной статье www.quizful.net/post/inner-classes-java пишется, что
… вложенный класс — это класс, который объявлен внутри объявления другого класса…
… Вложенные классы делятся на статические (в примере выше StaticNestedClass — это именно он) и нестатические (non-static). Собственно нестатические вложенные классы имеют и другое название — внутренние классы (inner classes). Внешний класс (outer class) мы иногда будем называть еще обрамляющим классом…

Также лекция 3 почему-то называется "Вложенные классы", хотя там присутствует только определение "внутренний".

Просьба знающих разъяснить как классы правильно называть.
Joysi
Уровень 41
29 апреля 2016, 13:42
Как я думаю, тут добавляются проблемы перевода. Идем к первоисточнику (Oracle документация):
docs.oracle.com/javase/tutorial/java/javaOO/nested.html

Определение nested(вложенного) класса.
The Java programming language allows you to define a class within another class. Such a class is called a nested class

Terminology: Nested classes are divided into two categories: static and non-static. Nested classes that are declared static are called static nested classes. Non-static nested classes are called inner classes
То есть вложенные бывают статические и не-статические, не-статические вложенные также называют внутренними(inner).

+ в догонку…
There are two special kinds of inner classes: local classes and anonymous classes.
Joysi
Уровень 41
29 апреля 2016, 13:44
Если есть время — очень хорошо описано тут — pr0java.blogspot.ru/2015/08/1.html
remain4life
Уровень 41
29 апреля 2016, 14:59
Спасибо, кажется, что ключевой всё же стала фраза: "… Программисты, пишущие на Java, не пришли к единому мнению по поводу именования различных типов внутренних классов. Поэтому вы можете обнаружить, что в разных ситуациях их называют по-разному..." :)
lexel
Уровень 39
19 марта 2016, 16:12
Не хватает закрывающей фигурной скобки
lexel
Уровень 39
14 марта 2016, 08:47
Ошибка в коде
Должно быть
public Car () со скобками
class Door без скобок
nanoezhik
Уровень 41
20 ноября 2014, 10:44
Вопрос по разделу «Учимся гуглить»:
Для чего "?" в коде ArrayList<?>. Я так и не нагуглил… может кто подскажет ответ?
INSIDIUS
Уровень 41
21 ноября 2014, 21:18
Загугли generics java
shcho_isle
Уровень 11
6 августа 2015, 12:08
Как я понял, суть в том, что
List<object>
не покроет все списки. Например, если нам нужно передать в метод такой параметр:
List<все что угодно>
— то
List<object>
для этого не подойдет.

Для этого и нужен
List<?>
new-Object
Уровень 30
4 ноября 2014, 17:05
Когда добавится материал как на лекциях 1-21? Через основной курс очень не удобно смотреть.
MindIbniM
Уровень 41
29 сентября 2014, 12:49
Очень понравилось у Хорстманна на тему анонимных классов: «Идея ввести в язык безымянные внутренние классы оказалась удачной, или это только великолепное средство создавать никому не понятные программы?»
Byshevsky
Уровень 16
8 марта 2016, 22:56
Согласен с Хорстманом ))
Не ну реально этот идиотизм с внутренними классами только для того чтобы писать никому не понятные программы. Вот в лекционном примере, на кой хрен вводить класс Дор, а не написать поле дор к классу Кар?
Чем этот код
public class Car
{
 int height = 160;
 ArrayList<Door> doors = new ArrayList<Door>();

 public Car
 {
  doors.add(new Door());
  doors.add(new Door());
  doors.add(new Door());
  doors.add(new Door());
 }

class Door()
 {
  public int getDoorHeight()
  {
   return (int)(height * 0.80);
  }
 }
}


лучше этого:
public class Car
{
    int height = 160;
    ArrayList<Double> doors = new ArrayList<Double>();

    public Car()
    {
        doors.add(height*0.8);
        doors.add(height*0.8);
        doors.add(height*0.8);
        doors.add(height*0.8);
    }
}


кроме лишних строчек кода, и лишних минут того кто будет разбираться с этой писаниной?
ab_random
Уровень 31
9 марта 2016, 00:33
Тем, например, что ваши двери имеют только высоту, в лекционном же примере, без особых изменений в остальном коде, им можно задать дополнительно ширину, цвет, материал и еще кучу других полезных фишек.
Кроме того, если хотите более реальный пример, на внутренних классах LinkedList реализован.
Ruzveld
Уровень 34
3 августа 2014, 16:47
На Easy-code (2 части) написано про внутренние классы с учетом нововведений в Java 8.
Kverde
Уровень 31
6 июля 2014, 11:14
Полезная статья про final.