Нет, я не думаю, что это возможно. Обычный подход заключается в создании адаптера для SomeType, в котором все методы, изменяющие состояние, генерируют исключение UnsupportedOperationException. Это используется, например, java.util.Collections.unmodifiable * -functions.
Есть несколько подходов к этому:
- вы можете позволить SomeType быть интерфейсом, а когда вам нужно, чтобы он был доступен только для чтения, просто создайте оболочку, делегирующую все методы чтения исходному объекту и реализующую все методы записи для генерации исключения.
- или вы можете создать подкласс SomeType, перекрывающий все методы записи
Это, конечно, даст вам проверку во время выполнения, а не во время компиляции. Если вы хотите время компиляции, вы можете позволить SomeType быть интерфейсом (или суперклассом) без методов записи, только чтение.