Ответ 1
Краткий ответ: в данный момент это невозможно. Но может быть поддержано в будущем.
Вы правы, у классов Java нет сопутствующих объектов. Вы можете добавить расширения только к классам (будут отображаться в экземплярах класса) или к объявленным объектам-компаньонам (будут выглядеть как статические в классе):
class A { companion object }
class B { companion object Test }
fun A.Companion.foo() { println("Test A.foo") }
fun B.Test.foo() { println("Test B.foo") }
fun main(args: Array<String>) {
A.foo() // prints «Test A.foo»
B.foo() // prints «Test B.foo»
}