Cloneable and
clone() is a bit of a weird design (dating back to the earliest version of
Java), so it's probably not a good example of how a marker interface should be used*. But it does demonstrate
how they can be used.
A better example is
RandomAccess. This is a marker interface used to indicate whether a
List can support efficient random access.
ArrayList implements
RandomAccess, but
LinkedList does not. The idea is that an algorithm using a list can check for this (using
instanceof), and can use the best approach depending on whether random access is efficient or not.
(* Some would say that nowadays a marker interface should never be used, because annotations are a better solution. They weren't available in the earliest versions of Java).