Я понимаю, что вы хотите, чтобы ваш уникальный метод doStuff
действовал по-разному в зависимости от класса от фактического класса параметра, который вы передаете ему.
Чтобы это было возможно, OwnedClass1
и OwnedClass2
должны расширять общий класс или интерфейс (который, я полагаю, вы называете OwnedClass
).В противном случае ваш doStuff
должен будет принять Object
в качестве параметра.
Тогда вы можете использовать instanceof
для дифференциации классов.
Пример с объектом:
public boolean doStuff(Object example) {
if (example instanceof OwnedClass1) {
System.out.println("this is a class 1!");
} else if (example instanceof OwnedClass2) {
System.out.println("this is a class 2!");
} else {
throw new RuntimeException("Not supported : " + example.getClass());
}
}
А если вас интересует только краткое название класса, то вы можете пойти так:
public boolean doStuff(Object example) {
System.out.println("this is a " + example.getClass().getName());
}
или даже
public boolean doStuff(Object example) {
System.out.println("this is a " + example.getClass().getName().replaceAll(".*\\.", ""));
}
HTH!