Ты почти у цели. Либо проверьте на ноль, либо еще лучше, используйте is
или when
и is
// as:
if(myobject.meta as ObjectA != null) Log.e("log", myobject.meta.name)
if(myobject.meta as ObjectB != null) Log.e("log", myobject.meta.number)
// is:
val meta = myobject.meta
if (meta is ObjectA) Log.e("log", meta.somePropertyOfObjectA)
if (meta is ObjectB) Log.e("log", meta.somePropertyOfObjectB)
// when:
when (myobject.meta) {
is ObjectA -> Log.e("log", myobject.meta.name)
is ObjectB -> Log.e("log", myobject.meta.number)
else -> throw Exception()
}
Однако, это работает, только если имеет смысл оригинальный тип. Если мета имеет класс ObjectC, и ни ObjectA, ни ObjectB не наследуют его, то это не поможет. Не видя ваш код класса, мы не сможем вам там помочь.
Но если это так, вы можете пересмотреть дизайн своего класса или поток кода, если вышеприведенное не сработает для вас.
РЕДАКТИРОВАТЬ: После того, как информация о классе была добавлена в Вопрос, похоже, что вы захотите первый вариант, небезопасное приведение через as
с нулевой проверкой.