java Могу ли я создать строку, которая определена как null в одной строке?

Я хотел бы передать параметр String как "null"

Однако это для суперметода в конструкторе, поэтому я не могу сделать

String s = null;
super(s);

я не могу просто сделать

super(null)

так как это приведет к неоднозначному вызову метода. Я также не хочу иметь для этого переменную экземпляра, которая имеет значение null, это кажется неэлегантным.

Есть ли способ создать нулевую строку?

NB

 new String(null) //does not compile

person bharal    schedule 14.12.2012    source источник
comment
@AndrewThompson: это должен быть ответ (каким бы простым он ни казался вам).   -  person JB Nizet    schedule 14.12.2012
comment
@JBNizet Эхх.. (пожимает плечами) Я немного опоздал, возвращаясь к этому. Теперь это было поставлено в качестве ответа другими, это кажется излишним.   -  person Andrew Thompson    schedule 14.12.2012


Ответы (3)


Просто сделай это

super((String)null);
person codeMan    schedule 14.12.2012

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

super("");

это позволит избежать нулевой проверки позже.

person AlexWien    schedule 14.12.2012
comment
это правда - хотя есть проверка на нулевое значение, и в случае, если мы когда-нибудь захотим сделать что-то с ненулевой и пустой строкой, я подумал, что буду держаться подальше от этого. - person bharal; 14.12.2012
comment
эта беседа Мне нравится ошибка с конкатенацией строк, но мне также нравится тот факт, что null не попадает в кучу (хотя эффективность в java кажется немного бессмысленной). - person Nathan Cooper; 14.12.2012

Проблема в том, что компилятор не знает, какой конструктор следует использовать.

Строка имеет различные конструкторы с одним параметром.

 String(String)
 String(char value[])
 String(StringBuffer)
 String(StringReader)

Когда вы используете String(null), неизвестно, что следует использовать.

Помните, что когда вы используете null в качестве аргумента (в методе или конструкторе), вы должны всегда пересылать его с приведением к нужному типу.

new String((String) null);

person Damian Leszczyński - Vash    schedule 14.12.2012