Если у двух классов есть методы точной такой же подписи, но эти методы не наследуются, есть ли способ определить интерфейс с общими методами и указать оба экземпляра этих двух классов с использованием одного и того же интерфейса?Java, могу ли я применить произвольный интерфейс к существующему классу?
Например, предположим, что класс Cat
имеет boolean isAlive()
и другой класс Dog
имеет boolean isAlive()
но Cat
и Dog
не имеет общего предка, кроме Object
и boolean isAlive()
не является унаследованный метод. Я не могу изменить Cat
или Dog
, потому что они были написаны другими. Могу ли я произвольно создать такой интерфейс и использовать его, чтобы указать Cat или Dog?
interface lovable
{
boolean isAlive();
}
void main()
{
lovable thing = new Cat(); <-- any syntax to achieve this?
love(thing);
}
void love(lovable thing)
{
if (thing.isAlive())
System.out.println("Aww.");
else
System.out.println("Eww.");
}
'class Cat реализует привлекательные' – QBrute
http://stackoverflow.com/questions/5196941/can-you-force-a-java-object-into-implementing-an-interface-at-runtime –
@QBrute to cite OP: «Я не могу изменить Cat или Dog, потому что они были написаны другими». так что это не представляется возможным/выполнимым. – Thomas