• Как удобнее всего эмитировать структуру С(С++) в java (под Android)?

    vlad20012
    @vlad20012
    @ser-mk А, собственно, есть какие-то другие варианты, кроме как потоки? Нет, есть, конечно, NIO, с его нативными буферами, но обычно это считается очень большим колдунством=) Так что все используют потоки. А вы что использовали?) На самом деле, я вас прекрасно понимаю, Когда переходишь на Java с C/C++, все кажется каким-то... не таким. И начинаешь задавать не те вопросы. Разные форумы просто завалены вопросами типа "как написать деструктор в Java" и т.п. Здесь та же ситуация. В Си можно привести к структуре произвольный участок памяти. В Java, на самом деле, тоже можно (через Unsafe и множество костылей), но это считается еще большим колдунством, так что будем считать, что нельзя. А что такое произвольный участок памяти? По сути, это и есть массив байт, про которые говорил @aratj. Кстати, насколько я знаю, C++ также был призван несколько сократить прямые операции с памятью, такие как приведение произвольного участка памяти к структуре, ибо это ужаснейшая возможность выстрелить себе в ногу. Так что лучше бы пересмотрели свой подход=)

    P.S Если вам помог ответ, не забывайте пометить его, как правильный.
  • Можно ли в Java создать массив без определения типа?

    vlad20012
    @vlad20012
    x = 10; Это не то же самое, что x = new Integer(10);
    Автобоксинг раскрывается в Integer.valueOf(10); Существенным отличием является то, что для Integer существует кэш из 256 элементов (от -128 до 127). Если значение, передаваемое в Integer.valueOf(), попадает в этот промежуток, будет возвращено значение из кэша, и новых инстансов создано не будет, в отличии от new Integer(), так как new всегда создает новый экземпляр. Рекомендуется никогда не использовать new для оберток примитивных типов, для каждого из них есть valueOf().