Я бы хотел сказать, что вы можете использовать псевдоним типа:
type HasFooMethod = { def foo: String }
val v = new Object {def foo = "bar"}
v.isInstanceOf[HasFooMethod]
Но это всегда вернется, благодаря стиранию.
Таким образом, вы можете использовать отражение или просто попытаться передать объект методу, принимающему структурный тип в качестве параметра - тогда компилятор выдаст ошибку, если он недопустим.