Угу, логичненько.
От: Cheblin2 Китай https://github.com/cheblin
Дата: 14.04.21 10:52
Оценка:
public class Main {
    
    static void test(int i){}
    static void test(Integer...i){}
    
    public static void main( String[] args ) {
        test((Integer)null);
    }
}

аплодирую стоя
Re: Угу, логичненько.
От: kov_serg Россия  
Дата: 14.04.21 11:07
Оценка:
Здравствуйте, Cheblin2, Вы писали:

C>
C>public class Main {
    
C>    static void test(int i){}
C>    static void test(Integer...i){}
    
C>    public static void main( String[] args ) {
C>        test((Integer)null);
C>    }
C>}
C>

C>аплодирую стоя

Добавь костыль
static void test(Integer i) {}
Re: Угу, логичненько.
От: halo Украина  
Дата: 14.04.21 14:36
Оценка:
Здравствуйте, Cheblin2, Вы писали:

public final class Main {

    private Main() {
    }

    private static void test(final Integer i) {
        System.out.println(i);
    }

    private static void test(final int... is) {
        System.out.println(Arrays.toString(is));
    }

    public static void main(final String... args) {
        test(/*(int) */0);
    }

}




https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.12.2
Re: Угу, логичненько.
От: · Великобритания  
Дата: 14.04.21 15:02
Оценка: +3
Здравствуйте, Cheblin2, Вы писали:

C>    static void test(Integer...i){}

Надо просто запомнить, что это просто синтаксический сахар для void test(Integer[] i) и тогда да, логичненько.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Отредактировано 14.04.2021 15:02 · . Предыдущая версия .
Re[2]: Угу, логичненько.
От: Cheblin2 Китай https://github.com/cheblin
Дата: 21.05.21 05:57
Оценка:
·>Надо просто запомнить, что это просто синтаксический сахар для void test(Integer[] i) и тогда да, логичненько.

в том то и дело что нет!
static void foo(byte... values) {}

public static void main(String[] args) throws Exception {
    foo(1, 2, 3, 4);
    foo(new byte[]{1, 2, 3, 4});
}

именно об этом я и говорю.
а в .NET, кстати, сделано по уму.
Отредактировано 21.05.2021 6:05 Cheblin2 . Предыдущая версия . Еще …
Отредактировано 21.05.2021 5:59 Cheblin2 . Предыдущая версия .
Отредактировано 21.05.2021 5:58 Cheblin2 . Предыдущая версия .
Re[3]: Угу, логичненько.
От: · Великобритания  
Дата: 21.05.21 07:39
Оценка:
Здравствуйте, Cheblin2, Вы писали:

C>·>Надо просто запомнить, что это просто синтаксический сахар для void test(Integer[] i) и тогда да, логичненько.

C>в том то и дело что нет!
Именно так и есть.

C>static void foo(byte... values) {}

Это вообще не в тему
Попробуй так:
static void foo(byte value) {}

public static void main(String[] args) throws Exception {
    foo(1);
}

1 — это не байт. А new byte[]{1} или (byte)1 — инициализация байтов.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Отредактировано 21.05.2021 7:42 · . Предыдущая версия .
Re[4]: Угу, логичненько.
От: Cheblin2 Китай https://github.com/cheblin
Дата: 21.05.21 11:50
Оценка:
·>Надо просто запомнить, что это просто синтаксический сахар для void test(Integer[] i)
это не соответствует действительности. что я и показал.
Re[5]: Угу, логичненько.
От: · Великобритания  
Дата: 21.05.21 12:04
Оценка:
Здравствуйте, Cheblin2, Вы писали:

C>·>Надо просто запомнить, что это просто синтаксический сахар для void test(Integer[] i)

C>это не соответствует действительности. что я и показал.
Ты запутался в трёх соснах. В последнем примере была проблема конверсии int->byte и никакого отношения к vararg не имеет.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.