标签: interface-implementation

接口内部类

我们可以在接口中拥有一个类,该类具有在其中实现的接口的不同方法吗?我在这里有一个疑问,为什么Java允许在接口内编写内部类以及我们可以在哪里使用它。

在下面的程序中,我在接口中编写了一个类并实现了接口的方法。在接口的实现类中,我刚刚调用了内部类方法。

public interface StrangeInterface
    {
      int a=10;int b=5;
      void add();
      void sub();
      class Inner
       {
         void add()
          {
             int c=a+b;
             System.out.println("After Addition:"+c);
          }
         void sub()
         {
             int c=a-b;
             System.out.println("After Subtraction:"+c);
         }
       }
    }   

 abstract public class StrangeInterfaceImpl implements I { 
      public static void main(String args[])
    {
       StrangInterface.Inner i=new StrangeInterface.Inner();
       i.add();
       i.sub();
    }
 }
Run Code Online (Sandbox Code Playgroud)

java interface interface-implementation

3
推荐指数
1
解决办法
4395
查看次数

当抽象超类包含工厂方法时如何访问它的实现?

我有一个抽象超类,带有一个返回子类实例的工厂。是否有可能有一个仅在超类中实现的方法?例如,在下面的代码中,是否可以删除 Wind::act()?

abstract class Element {
  final String action;    // what it does
  String act() => action; // do it

  factory Element() {
    return new Wind();
  }
}

class Wind implements Element {
  final action = "blows";
  act() => action;  // Why is this necessary?
}

void main() {
  print(new  Element().act());
}
Run Code Online (Sandbox Code Playgroud)

删除 Wind::act() 时,出现缺少它的错误。此外,当扩展而不是实现超类时,省略​​子类实现不会导致错误。但对于工厂方法,扩展不是一种选择。

polymorphism factory interface-implementation dart

3
推荐指数
1
解决办法
1423
查看次数

调用没有反射的方法声明

我有一个基类(顺序)与一组子类(生产者,特殊订单,零件订单等).

只有其中一些子类实现了一个特定的接口(ITrackingCustomer),该接口具有单个方法声明(object getcustdetails()).

作为我的解决方案的一部分,我的所有订单都在中心位置处理,即任何crud方法都通过中心层.在这个中心层,我想做以下事情:

如果订单类型为ITrackingCustomer

然后调用方法getcustdetails()

我使用以下代码工作:

if (typeof(ITrackingCustomer).IsAssignableFrom(Order.GetType())) 
{ 
     MethodInfo theMethod = Order.GetType().GetMethod("getcustdetails"); 
     object y = theMethod.Invoke(Order, null); 
} 
Run Code Online (Sandbox Code Playgroud)

我对第一部分使用isassignable来感到满意,但是想对第二部分使用性能较低的方法(即使用invoke进行反射).

我的问题是:

有没有更有效的方法来执行此操作,因为我已经读过使用invoke命令是昂贵的.

c# reflection methods polymorphism interface-implementation

2
推荐指数
1
解决办法
395
查看次数

如何将ArrayList传递给将集合作为输入的方法

我想通过一些ArrayList<Integer>X进入方法a(Collection<Integer> someCol)是采用Collection<Integer>作为输入.

我怎样才能做到这一点?我认为ArrayList是一个集合,因此我应该能够"只做它"但似乎Collection是一个接口,而ArrayList实现了这个接口.我能做些什么来使这项工作......如果你理解这个理论对我和其他许多人也有帮助.

谢谢

java collections arraylist interface-implementation

2
推荐指数
1
解决办法
2万
查看次数

错误:List <int>没有'System.Collections.Generic.IEnumerable <int>的匹配项

如何用列表实现接口成员"f"?

public interface I
{
    IEnumerable<int> f { get; set; }
}

public class C:I
{
    public List<int> f { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

错误1'ClassLibrary1.C'未实现接口成员'ClassLibrary1.I.f'.'ClassLibrary1.Cf'无法实现'ClassLibrary1.If',因为它没有匹配的返回类型'System.Collections.Generic.IEnumerable'.c:\ users\admin\documents\visual studio 2010\Projects\ClassLibrary1\Class1.cs

c# interface-implementation

2
推荐指数
1
解决办法
1616
查看次数

是否允许类在C#中实现接口和其他私有方法?

我有以下界面:

interface IExcelServices
{
    Dictionary<string, string[]> FilterFields(Dictionary<string, string[]>  excelContent);
    Dictionary<string, string[]> ParseExcelFile(string path);
}
Run Code Online (Sandbox Code Playgroud)

这由以下类实现:

public class ExcelServices : IExcelServices
{
    public Dictionary<string, string[]> FilterFields(Dictionary<string, 
       string[]>  excelContent)
    {
        //somecode
    }

    public Dictionary<string, string[]> ParseExcelFile(string path)
    {
        //somecode
    }

    private void ReleaseObject(object obj)
    {
        //somecode
    }
Run Code Online (Sandbox Code Playgroud)

}

我的代码编译没有任何问题,但我想知道是否添加一个不在接口定义中的私有方法(或通常任何方法)是一个很好的OO编程实践.

谢谢
弗朗切斯科

c# interface private-methods interface-implementation

2
推荐指数
1
解决办法
1595
查看次数

DataTable是否实现了IListSource?

文档(和intellisense)非常清楚地说明了DataTable实现IListSource.但是为什么没有DataTable一个getList()方法,这是IListView接口的(主要)部分?

.net interface interface-implementation

2
推荐指数
1
解决办法
1431
查看次数

C# Diamond-继承(接口实现)

如果一个类从两个单独的接口实现一个接口,它的行为是否与仅实现一次相同?

例子:

public interface IAnimal { /* ... */ }
public interface IFullAnimal : IAnimal { /* ... */ }

public interface IBear : IAnimal { /* ... */ }
public interface IFullBear : IBear, IFullAnimal { /* ... */ }

// and implementing IFullBear:
public class FullBear : IFullBear { /* ... */ }
Run Code Online (Sandbox Code Playgroud)

上面,FullBear实现了IAnimalIFullAnimalIBearIFullBear。这是否会引入有关 IAnimal 实现的任何奇怪行为,因为两者IFullAnimalIBear没有提供有关实现的任何信息IAnimal(因为该语言不允许这样做)。

c# inheritance interface-implementation diamond-problem

2
推荐指数
1
解决办法
2820
查看次数

实现接口的类不起作用,因为"Class不是抽象的,不会覆盖抽象方法......".这是什么错误?

Java教程中有一个"实现接口"例子.我重复了这个例子,但它不起作用.NetBeans显示了RectanglePlus类声明左侧的错误.错误是:

rectangleplus.RectanglePlus不是抽象的,并且不会覆盖rectangleplus中的抽象方法isLargerThan(rectangleplus.Relatable).

我做的与教程中写的相同.为什么会显示错误?这是我对该项目的实施.

  1. 该项目的名称是RectanglePlus.
  2. 包的名称是rectangleplus.

项目中的第一个文件是Interface Relatable:

package rectangleplus;

public interface Relatable {
   int isLarger(Relatable other);   
}
Run Code Online (Sandbox Code Playgroud)

项目中的第二个文件是Main Class RectanglePluswith helper class Point:

package rectangleplus;

public class RectanglePlus implements Relatable {

    public int width = 0;
    public int height = 0;
    public Point origin;

    // four constructors
    public RectanglePlus() {
        origin = new Point(0, 0);
    }
    public RectanglePlus(Point p) {
        origin = p;
    }
    public RectanglePlus(int w, …
Run Code Online (Sandbox Code Playgroud)

java interface interface-implementation

1
推荐指数
1
解决办法
511
查看次数

如何调用具有Interface作为C#参数之一的方法?

我有以下方法(在我的DLL中实现第三方sdk方法):

public void PlaceItem(myItemData item, IRequest request)
{
    var item = (ItemClassData)item; //**myItemData is the base class for ItemClassData**
    item.Id = 101;
    request.Succeeded(item.Id);
}
Run Code Online (Sandbox Code Playgroud)

接口参数如下:

public interface IRequest
{
    void Failed(string Error);
    void Succeeded(string ItemId);
}
Run Code Online (Sandbox Code Playgroud)

我想从函数中调用此方法.我知道如何在调用此方法时将对象作为第一个参数传递.但是如何传递第二个参数(Interface).任何帮助是极大的赞赏.

c# methods interface parameter-passing interface-implementation

1
推荐指数
1
解决办法
764
查看次数

如何实现 F# 接口并让成员返回该接口的实例?

假设我在 F# 中有以下接口:

type InterfaceA =
 abstract Magic : InterfaceA -> InterfaceA
Run Code Online (Sandbox Code Playgroud)

我怎样才能实现这样的接口?当我尝试这样做时:

type MyTypeA = {x:int} with
 interface InterfaceA with
  member self.Magic another = 
   {x=self.x+another.x}
Run Code Online (Sandbox Code Playgroud)

我收到错误: This expression was expected to have type 'InterfaceA' but here has type 'MyTypeA'

f# interface interface-implementation

1
推荐指数
1
解决办法
104
查看次数

如何使类既实现接口又从其他类继承

我希望我的类实现一个接口,并从Auditable表中获取其他属性.我可以两个都做吗?我试图在这里做,但我的IDE中出现错误.

public partial class ObjectiveDetail : IEquatable<ObjectiveDetail>, AuditableTable
{
    ...
}

public abstract class AuditableTable : IAuditableTable
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

c# interface derived-class interface-implementation

-1
推荐指数
1
解决办法
223
查看次数

为什么这个实现方法看不到它的兄弟?

我有一个实现接口的类:

public class SQLiteHHSDBUtils : IHHSDBUtils
{

    void IHHSDBUtils.SetupDB()
    {
            . . .
            if (!TableExists("AppSettings"))

    . . .

    bool IHHSDBUtils.TableExists(string tableName)
    {
    . . .
Run Code Online (Sandbox Code Playgroud)

它找不到自己的兄弟坐在它下面(if (!TableExists()):

"TableExists"这个名称在当前上下文中不存在

它怎么样/为什么它看不到它?

c# interface interface-implementation

-3
推荐指数
1
解决办法
73
查看次数