Size: a a a

2020 February 24

d

dima in learn.java
в компайл тайме еще как стринг!
источник

DS

Dmitriy Shilnikov in learn.java
L S
Ну если ты говоришь, что тип есть, то он энивэй не стринг
Я 4 ответил
источник

d

dima in learn.java
налл тип без имени кастится к референс
источник

d

dima in learn.java
почему я зацепился за компайл тайм? да потому что если говорить только о рантайме - вся система рушится
источник

DS

Dmitriy Shilnikov in learn.java
Есть тип, есть правила работы с этим типом (кастится к любому ссылочному типу, к нему нельзя кастить никакой тип)
источник

d

dima in learn.java
вспомните затирание дженериков
источник

d

dima in learn.java
если поведение в рантайме и компайле отличаются - об этом стоит сказать
источник

d

dima in learn.java
потому что если бы у s был бы  nulltype всегда - мы бы нулевые ссылки не смогли бы вообще никуда поместить
источник

S

Sergei in learn.java
dima
в компайл тайме еще как стринг!
Тут, мне кажется, тонкая грань между типом reference и типом value.

String s = "abc";
Object o = s;

У s reference тип String,
у o reference тип Object,
оба указывают на инстансе типа String:
o instanceof String вернёт true
источник

S

Sergei in learn.java
Опрос я старался как раз про value сделать, потому как именно для value у null проявляются особенности.
источник

DS

Dmitriy Shilnikov in learn.java
Sergei
Тут, мне кажется, тонкая грань между типом reference и типом value.

String s = "abc";
Object o = s;

У s reference тип String,
у o reference тип Object,
оба указывают на инстансе типа String:
o instanceof String вернёт true
Во, я поэтому и говорю, что во время компиляции странно про "значения" говорить. Там ещё только типы переменных есть.
источник

DS

Dmitriy Shilnikov in learn.java
По-моему, когда мы пишем String s, то мы говорим компилятору - "создай область памяти, к которой я буду обращаться по имени s, и трактуй значения в этой области памяти, как ссылки на значения типа String).
источник

d

dima in learn.java
я думаю в случае налл - надо говорить об обоих случаях
источник

DS

Dmitriy Shilnikov in learn.java
Но самих значений нету в этот момент.
источник

S

Sergei in learn.java
Мне любопытен вот какой факт:
* во-первых, мы так или иначе установили, что <nulltype> и String - это два очень разных типа;
* при этом в "String s" может храниться значение одно из этих - весьма разных - типов.
источник

S

Sergei in learn.java
Понятно, никакой Америки это не открывает, и if (s == null) все умеют.

Но если вдуматься - это всё какой-то костыль.
источник

S

Sergei in learn.java
(про Optional знаю, сам использую, всем рекомендую)
источник

DS

Dmitriy Shilnikov in learn.java
Sergei
Понятно, никакой Америки это не открывает, и if (s == null) все умеют.

Но если вдуматься - это всё какой-то костыль.
Ну так поэтому и существует NullPointerException. Потому что в джаве в переменную с типом String можно запихнуть значение типа null.
источник

S

Sergei in learn.java
Dmitriy Shilnikov
Ну так поэтому и существует NullPointerException. Потому что в джаве в переменную с типом String можно запихнуть значение типа null.
Отож.
источник

S

Sergei in learn.java
Dmitriy Shilnikov
Ну так поэтому и существует NullPointerException. Потому что в джаве в переменную с типом String можно запихнуть значение типа null.
Java не одинока, конечно. Ежели сравнивать с языками, где есть адресная арифметика - типизация Java вообще идеальна.
источник