Невозможно привести не реализованный объект класса к типу интерфейса, как вы получите ClassCastException
во время выполнения. Это потому, что Java не поддерживает утка, набирающую , она не проверяет, совпадают ли сигнатуры метода.
Но вы можете использовать java-8 ссылку на метод , чтобы передать логику, реализованную в MyClass
getString
, в тип ссылки на интерфейс:
class MyClass {
String getString(final String stringName) {
return stringName;
}
}
interface MyInterface {
String getString(final String stringName);
}
public static void main(String[] args) {
//MyInterface myInterface = (MyInterface)new MyClass(); //java.lang.ClassCastException: class MyClass cannot be cast to class MyInterface
MyClass clazz = new MyClass();
MyInterface myInterface = clazz::getString;
System.out.println(myInterface.getString("test"));
}
Также вы не можете создать экземпляр интерфейса, как вы это сделали в своем коде.