Как ограничить тип данных параметров с помощью интерфейса

#kotlin #interface

Вопрос:

Есть ли способ ограничить тип данных, передаваемых в функции ? У меня есть функция:

 fun doSomething(para1: String, para2: Any) { ..do something.. }  

и в функции doSomething para2 будет либо A, либо D. функция будет делать точно то же самое, поэтому я не хочу дублировать код… а также я должен избегать использования любого типа данных в качестве….

 data class A(  val field1A: B,  val field2A: C, )  data class D(  val field1D: String, )  

Я думаю использовать такой интерфейс, как

 interface AAA {  val field1A: B,  val field2A: C,  val field1D: String, }  data class A(  override val field1A: B,  override val field2A: C,  override val field1D: String, ):AAA  data class D(  override val field1A: B,  override val field2A: C,  override val field1D: String, ):AAA  fun doSomething(para1: String, para2: AAA) { ..do something.. }  

но это заставляет меня иметь неожиданное поле 1d в классе данных A и неожиданное поле 1A, поле 2A в классе данных D

Есть ли какой-нибудь способ достичь этого ?

Комментарии:

1. Как именно doSomething используется para2?