Tag: 接口

为什么在一个显式的只有getter的接口实现上拥有一个private setter是非法的?

我倾向于支持显式接口实现而不是隐式接口实现,因为我认为对接口进行编程而不是针对实现进行编程通常是可取的,而且在处理Web服务时通常也是必需的。 这就是说,我想知道为什么以下是一个明确的接口声明和合法的隐式接口声明是非法的: interface IConnection { string ConnectionString { get; } } class Connection1 : IConnection { // private set is illegal, won't compile string IConnection.ConnectionString { get; private set; } } class Connection2 : IConnection { // private set is legal now, it is not part of the interface string ConnectionString { get; private set; […]

为什么我不能拥有受保护的接口成员?

在接口上声明受保护访问成员的参数是什么? 例如,这是无效的: public interface IOrange { public OrangePeel Peel { get; } protected OrangePips Seeds { get; } } 在这个例子中, IOrange接口将保证实现者至less向其inheritance者提供一个OrangePips实例。 如果实施者想要的话,他们可以将范围扩大到public : public class NavelOrange : IOrange { public OrangePeel Peel { get { return new OrangePeel(); } } protected OrangePips Seeds { get { return null; } } } public class ValenciaOrange : […]

我们可以在Java中创build一个接口的实例吗?

有没有可能在Java中创build一个接口的实例? 我已经读过使用内部匿名类的地方,我们可以这样做,如下所示: interface Test { public void wish(); } class Main { public static void main(String[] args) { Test t=new Test() { public void wish() { System.out.println("output: hello how ru"); } }; t.wish(); } } cmd> javac Main.java cmd> java Main output: hello how ru 这里正确吗?

Java 8中的抽象类和接口有什么区别?

在Java中,抽象类和接口之间是微妙而重要的区别: 默认实现 。 抽象类可以有他们,接口不能。 虽然Java 8引入了接口的默认实现,这意味着这不再是接口和抽象类之间的关键区别。 那么是什么? 尽我所知,唯一剩下的差别(除了可能是一些效率下面的东西),抽象类遵循传统的Java单一inheritance,而接口可以有多重inheritance(或多重实现,如果你愿意的话)。 这导致我另一个问题 – 新的Java 8接口如何避免钻石问题 ?

结构体实现接口是否安全?

我似乎还记得阅读关于结构如何通过C#实现CLR中的接口是不好的,但我似乎无法find任何有关它的信息。 这不好吗? 这样做是否有意想不到的后果? public interface Foo { Bar GetBar(); } public struct Fubar : Foo { public Bar GetBar() { return new Bar(); } }

用Java实现多个接口 – 有办法委托吗?

我需要创build一个基类,实现多个接口,有很多方法,下面的例子。 有没有一个更简单的方法来委派这些方法调用,而不必创build一个重复的方法部落? public class MultipleInterfaces implements InterFaceOne, InterFaceTwo { private InterFaceOne if1; private InterFaceTwo if2; public MultipleInterfaces() { if1 = new ImplementingClassOne(); if2 = new ImplementingClassTwo(); } @Override public void classOneMethodOne { if1.methodOne(); } @Override public void classOneMethodTwo { if1.methodTwo(); } /** Etc. */ @Override public void classTwoMethodOne { if2.methodOne(); } @Override public void classTwoMethodTwo […]

C# – 不能隐式地将List <Product>转换为List <IProduct>

我有我所有的接口定义项目:RivWorks.Interfaces 我有一个项目,我定义了具体的实践:RivWorks.DTO 我已经做了几百次之前,但由于某种原因,我现在得到这个错误: 不能将types'System.Collections.Generic.List <RivWorks.DTO.Product>'隐式转换为'System.Collections.Generic.List <RivWorks.Interfaces.DataContracts.IProduct>' 接口定义(缩写): namespace RivWorks.Interfaces.DataContracts { public interface IProduct { [XmlElement] [DataMember(Name = "ID", Order = 0)] Guid ProductID { get; set; } [XmlElement] [DataMember(Name = "altID", Order = 1)] long alternateProductID { get; set; } [XmlElement] [DataMember(Name = "CompanyId", Order = 2)] Guid CompanyId { get; set; } … } […]

有没有办法在ES6 / Node 4中创build接口?

ES6在节点4中是完全可用的。我想知道它是否包含一个定义方法合约的接口的概念,就像在MyClass implements MyInterface 。 我找不到我的谷歌search,但也许有一个很好的技巧或解决方法可用。

默认方法返回true一段时间,然后返回false? (可能的JVM错误)

我有一个下面的代码问题,我把它分离到最封闭的forms,我正在使用Java 8,几乎准备好发布(2014年3月18日),所以我期望在实现本身没有严重的问题,所以它可能/必须是我自己的代码: 注意:代码是用Java 8编写的,它具有各种新特性,包括接口中default方法实现。 public abstract class Drawable implements DrawableInterface { } interface DrawableInterface { default public boolean isShadowReceiver() { return false; } default public boolean isShadowCaster() { return false; } } public interface ShadowDrawable extends DrawableInterface { @Override default public boolean isShadowReceiver() { return true; } @Override default public boolean isShadowCaster() { return true; […]

如何将委托添加到接口C#

我需要在class上有一些代表。 我想使用界面来“提醒”我设置这些代表。 如何? 我的课堂是这样的: public class ClsPictures : myInterface { // Implementing the IProcess interface public event UpdateStatusEventHandler UpdateStatusText; public delegate void UpdateStatusEventHandler(string Status); public event StartedEventHandler Started; public delegate void StartedEventHandler(); } 我需要一个界面来强制这些代表: public interface myInterface { // ????? }