Инстанцирование внутреннего класса

Вы не можете записывать на флэш-память, как если бы это была RAM, и все. Flash - это ROM. Именно поэтому все ваши переменные, размещенные во флэш-памяти, должны / должны быть квалифицированы const, что означает только чтение.

Можно сменить вспышку, и ваша часть может иметь для этой цели выделенные данные вспышки / eeprom. Но запись в такие части памяти - это не то, что компилятор сделает для вас. Вам нужно написать драйвер для флеш-программирования. Например, вы должны изучить часть программирования флэш-памяти в руководстве + примечания к приложению.

14
задан Mark Krijgsman 7 April 2014 в 14:49
поделиться

2 ответа

Если это - действительно внутренний класс вместо вложенного (статического) класса, существует неявный параметр конструктора, который является ссылкой на экземпляр внешнего класса. Вы не можете использовать Class.newInstance на том этапе - необходимо получить соответствующего конструктора. Вот пример:

import java.lang.reflect.*;

class Test
{
    public static void main(String[] args) throws Exception
    {
        Class<Outer.Inner> clazz = Outer.Inner.class;

        Constructor<Outer.Inner> ctor = clazz.getConstructor(Outer.class);

        Outer outer = new Outer();
        Outer.Inner instance = ctor.newInstance(outer);
    }
}

class Outer
{
    class Inner
    {
        // getConstructor only returns a public constructor. If you need
        // non-public ones, use getDeclaredConstructors
        public Inner() {}
    }
}
27
ответ дан 1 December 2019 в 08:43
поделиться

Это исключение будет выдано, только если clazz представляет или абстрактный класс или интерфейс. Вы уверены, что передаете Объект класса, который представляет реальный класс?

0
ответ дан 1 December 2019 в 08:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: