https://kotlinlang.org logo
c

Casey Brooks

01/16/2019, 6:56 PM
The first thing that comes to mind is using sealed classes that represent your possible dimensions:
Copy code
sealed class Dim(val size)

class _1() : Dim(1)
class _2() : Dim(2)
class _3() : Dim(3)
class _4() : Dim(4)
class _5() : Dim(5)
class _6() : Dim(6)
class _7() : Dim(7)
class _8() : Dim(8)
class _9() : Dim(9)

class Matrix<T : Dim, U : Dim>(t: T, u: U)

val matrix = Matrix(_2(), _4())
What exactly are you wanting the compiler to check?