Я читал об интерфейсах маркеров, и у меня появилось некоторое представление о том, как их можно использовать в коде, но я не понимаю, зачем они нам нужны и по какой причине была введена эта концепция.
Я ищу в Интернете, и все ответы примерно такие: «они предоставляют некоторую важную информацию для JVM, чтобы JVM могла выполнять некоторые полезные операции», но вопрос в том, почему JVM должна это знать и какую возможную операцию выполняет JVM должен выполнить? Почему я не могу просто клонировать объект, не расширяя класс из Clonable? Почему я не могу сериализовать объект класса, не расширяя его из Serializable?
Маркерные интерфейсы не имеют особого смысла и, на мой взгляд, это явно не лучший дизайн. Интерфейс БЕЗ каких-либо методов ??? В чем смысл?
Теперь, по-видимому, здесь должна использоваться аннотация вместо интерфейса маркера, но все же вопрос в том, почему JVM должна знать?