我有两个项目,它们有几个共同的类和接口。我正试图将常见的东西转移到另一个项目,并与其他两个项目分享。我们称之为:
项目一个项目B项目常见的
项目A和B有不同方法的接口,如:
项目
interface Foo {
fun screen1InProjectA()
fun screen2InProjectA()
}
项目B
interface Foo {
fun screen1InProjectB()
fun screen2InProjectB()
}
我也有下面的接口,在项目A和b是相同的
interface ContractFoo {
fun screen(to: Foo.() -> Unit)
}
我想移动接口ContractFoo到我的项目公共,但是它有一个Foo依赖,公共项目不能也不应该访问项目a和项目B。是否有一种方法来修改Foo接口,以便我可以移动ContractFoo项目公共?
在我看来,你有两个选择。
1。使用泛型
interface Contract<T> {
fun screen(to: T.() -> Unit)
}
当然,这打开了任何事物的Contract
的可能性,即使它不是Foo
。
2。添加Foo
接口到Project Common
您可以在Project Common中设置一个标记接口Foo
,如下所示:
interface Foo { }
您将在每个项目中扩展:
interface FooA : Foo {
fun screen1InProjectA()
fun screen2InProjectA()
}
interface FooB : Foo {
fun screen1InProjectB()
fun screen2InProjectB()
}
我选2。