Предупреждение не проблема, боюсь, что дизайн.
Ваша текущая иерархия нарушает принцип подстановки Лискова, поскольку класс, получающий экземпляр MyClass, ожидает, что setInnerValue будет работать, и может некорректно обрабатывать это исключение. Вы можете сказать, что X для чтения и записи - это тип X для чтения, но нельзя сказать, что X для чтения - это тип X для чтения и записи.
Когда я сталкиваюсь с такой ситуацией, я создаю интерфейс IMyX с операциями чтения, подынтерфейс IMutableMyX с операциями записи, а затем реальный класс реализует IMutableMyX и, следовательно, IMyX. Тогда я очень осторожен, чтобы пропустить IMutableMyX только тогда, когда мне нужно, и пропустить IMyX во всех других случаях.
Мне кажется, что для ограничения доступа лучше использовать компилятор и типы, чем рассчитывать на исключения во время выполнения. Это также делает ваш код намного более понятным и вынуждает вас явно понижать интерфейс, когда вам нужен доступ для записи.
Я понимаю, что это не отвечает на ваш вопрос об избавлении от предупреждений. Но предупреждения могут быть либо подавлены, либо проигнорированы, либо устранены. Неиспользуемый параметр часто является неприятным запахом, который указывает, что ваш метод может не выполнять то, что он должен делать. Методы должны получать только необходимые параметры. Если параметр не используется, параметр не является обязательным, и поэтому необходимо что-то изменить.