Tag: 界面

联盟类型/扩展接口

我有几个data class与字段,这是在形式中使用,并需要他们有一个方法返回true如果任何字段已被填写。 我不想为所有的课程重写这个,所以我现在这样做: data class Order(var consumer: String, var pdfs: List<URI>): Form { override val isEmpty(): Boolean get() = checkEmpty(consumer, pdfs) } data class SomethingElse(var str: String, var set: Set<String>): Form { override val isEmpty(): Boolean get() = checkEmpty(str, set) } interface Form { val isEmpty: Boolean fun <T> checkEmpty(vararg fields: T): Boolean { for […]

在C#中,是否有可能为类型公开其成员类型的接口作为自己的接口

我不确定如何清楚地说出这个问题,所以下面是同一个问题的另外两个版本: 一个结构/类可以通过委托给它的字段/属性来实现一个接口吗? 我可以将由字段/属性类型实现的接口映射到其结构/类吗? 这里是一个代码示例添加伪语法,希望显示我的意思是: public class School : IEnumerable<Student> { private List<Student> students expose IEnumerable<Student>; … } 如果这不是现在可能的话,这有可能吗? …或者这种方法存在一些严重的问题吗? 我认为这可能只是语法糖来摆脱锅炉板代码,否则将功能相同。 例: public class School : IEnumerable<Student> { private List<Student> students; … public IEnumerator<Student> GetEnumerator() { return students.GetEnumerator(); } IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } } } 这当然是一个非常人为和最小的例子。 当为它设计界面时,好处会更大,特别是当有很多方法“映射”的时候。 更新:我知道我提供了一个可怕的例子,但我只是想用最简单的例子。 问题的核心不在于具体的情况。 说了这么多,我的例子很糟糕。 所以,为了更好地帮助那些喜欢看到好榜样的人陪伴一个问题,这里有一个更好的例子: public interface IValidPeriod […]

从不同的界面覆盖相同的签名

如果我们有两个接口,使用相同的签名方法,我们可以在一个类中实现它们,方法如下: interface A { void doStuff(); } interface B { void doStuff(); } class Test : A, B { void A.doStuff() { Console.WriteLine("A"); } void B.doStuff() { Console.WriteLine("A"); } } 如果我们把它转换成Kotlin我们有 interface A { fun doStuff() } interface B { fun doStuff() } class Test : A, B { override fun doStuff() { println("Same for […]

Kotlin-android-extension类之间的通信类似于与其他片段进行通信

我有3个部分到我的项目:一个模型,做计算,一些片段,显示用户界面,并发送触发到我的第三部分,主要活动。 我做了所有我的片段与一些接口,如与其他片段通信 。 但是现在我需要模型的一部分来触发一些用户界面的变化。 我不知道该怎么做。 因为我的目标是让我的模型的一部分发送或触发一些函数,以便GUI得到更新,但它本身并不知道GUI。 (它是完全独立的)在主要活动中,我覆盖了所有的功能 class MainActivity : AppCompatActivity(), MimaFragment.elementSelectedListener, InstructionFragment.instructionSaveButtonClickedCallback , OptionFragment.optionSaveButtonClickedCallback, MimaFragment.UITrigger{ override fun abortOptions() { extendNormal() } override fun updateMima() { mimaFragment.updateView() } override fun normal() { mimaFragment.drawArrows() }} 片段exapmle: class OptionFragment : Fragment() { var optionCallback : optionSaveButtonClickedCallback? = null interface optionSaveButtonClickedCallback{ fun updateMima() fun abortOptions() } override fun […]

什么编程语言支持由代理实现隐式接口?

Kotlin可以做到这一点非常巧妙的把戏: class Derived(b: Base) : Base by b 这使您的类Derived实现Base ,并且在Derived中未明确实现Base所有方法都会自动委派给成员b 。 我不在Kotlin编程,失去'this'指针可能是相当有限的,但它看起来像一个简单的东西,可能意味着每一种语言都应该具有的可维护性。

为什么在Android Studio中重新启动后用Kotlin编写的界面消失了?

我有一个用Kotlin编写的接口来进行REST调用(到目前为止): import io.reactivex.Observable import okhttp3.ResponseBody import retrofit2.Response import retrofit2.http.Body import retrofit2.http.POST const val PUSH_ENDPOINT = "prices/v1" interface ArticleSearchRestAdapter { @POST("$PUSH_ENDPOINT/articles/search") fun register(@Body articlerequest: ArticleRequest): Observable<Response<ResponseBody>> } 正如我所说,这个工程到目前为止,但在Android Studio的电脑重新启动后,图标变成了 从 至 。 然后其他使用ArticleSearchRestAdapter的类无法找到此接口并标记为红色。 这是Androuid Studio中的错误吗? 哪里不对? IDE:Android Studio 3.0 Beta 6

为什么不Kotlin数组<T>实现Iterable <T>

为什么Kotlin的Array<T>类不能实现Iterable<T> ? 快速浏览一下文档,发现它也有一个iterator()方法。

Java和Kotlin中的共享接口之间的关系(例如:List <>)

当我仔细看看kotlin .map内联函数时,问题出现了。 这是它的定义 public inline fun <T, R> Iterable<T>.map(transform: (T) -> R): List<R>{ return mapTo(ArrayList<R>(collectionSizeOrDefault(10)), transform)} 在函数定义中,它应该返回一个在Collection.kt中定义的List。 但是,它返回一个ArrayList,它实现了Java中的List接口(List.java) Java界面和Kotlin界面有什么关系? 我想象会有更类似的例子,也许设置,或地图?

Kotlin:我怎样才能让Android Studio在课堂底层实现界面的功能

在Kotlin类中实现接口时: 当我按下ClassName上的Alt + Enter时,我可以让IDE通过“实现成员”添加一个接口的函数。 在Kotlin中,这些功能被添加到课程的顶部,这实在令人烦恼。 我希望在课程结束时添加它们(就像在Java中一样)。 我怎样才能做到这一点?

如何将java jna接口转换为kotlin

我正试图移植到kotlin的openvr绑定 我有以下在Java中: public class IVRSystem extends Structure { /** * C type : GetRecommendedRenderTargetSize_callback* */ public IVRSystem.GetRecommendedRenderTargetSize_callback GetRecommendedRenderTargetSize; public interface GetRecommendedRenderTargetSize_callback extends Callback { void apply(IntBuffer pnWidth, IntBuffer pnHeight); }; } Intellij将其自动转换为 var GetRecommendedRenderTargetSize: IVRSystem.GetRecommendedRenderTargetSize_callback? = null interface GetRecommendedRenderTargetSize_callback : Callback { fun apply(pnWidth: IntBuffer, pnHeight: IntBuffer) } 我改变它然后: fun getRecommendedRenderTargetSize(pnWidth: IntBuffer, pnHeight: IntBuffer) = […]