标签: interface

接口是否比使用正确的方法更多

所以我想说我有这个界面:

public interface IBox
{
   public void setSize(int size);
   public int getSize();
   public int getArea();
  //...and so on
}
Run Code Online (Sandbox Code Playgroud)

我有一个实现它的类:

public class Rectangle implements IBox
{
   private int size;
   //Methods here
}
Run Code Online (Sandbox Code Playgroud)

如果我想使用IBox接口,我实际上无法创建它的实例,方式如下:

public static void main(String args[])
{
    Ibox myBox=new Ibox();
}
Run Code Online (Sandbox Code Playgroud)

对?所以我实际上必须这样做:

public static void main(String args[])
{
    Rectangle myBox=new Rectangle();
}
Run Code Online (Sandbox Code Playgroud)

如果这是真的,那么接口的唯一目的是确保实现接口的类如接口所描述的那样在其中获得了正确的方法?或者是否还有其他任何接口用途?

java oop language-features interface

159
推荐指数
9
解决办法
16万
查看次数

如何创建一个实现具有两个泛型类型的接口的Java类?

我有一个通用的界面

public interface Consumer<E> {
    public void consume(E e);
}
Run Code Online (Sandbox Code Playgroud)

我有一个类消耗两种类型的对象,所以我想做类似的事情:

public class TwoTypesConsumer implements Consumer<Tomato>, Consumer<Apple>
{
   public void consume(Tomato t) {  .....  }
   public void consume(Apple a) { ...... }
}
Run Code Online (Sandbox Code Playgroud)

显然我做不到.

我当然可以自己实施调度,例如

public class TwoTypesConsumer implements Consumer<Object> {
   public void consume(Object o) {
      if (o instanceof Tomato) { ..... }
      else if (o instanceof Apple) { ..... }
      else { throw new IllegalArgumentException(...) }
   }
}
Run Code Online (Sandbox Code Playgroud)

但我正在寻找泛型提供的编译时类型检查和调度解决方案.

我能想到的最好的解决方案是定义单独的接口,例如

public interface AppleConsumer {
   public void consume(Apple a);
} …
Run Code Online (Sandbox Code Playgroud)

java generics interface multiple-inheritance

158
推荐指数
4
解决办法
5万
查看次数

X没有实现Y(...方法有一个指针接收器)

关于这个" X没有实现Y(...方法有一个指针接收器) "的事情,已经有几个问答,但对我来说,他们似乎在谈论不同的事情,而不是适用于我的具体案例.

因此,我没有将问题变得非常具体,而是将其广泛和抽象化 - 似乎有几个不同的案例可以使这个错误发生,有人可以总结一下吗?

即,如何避免这个问题,如果发生,有什么可能性?谢谢.

methods pointers interface go

157
推荐指数
3
解决办法
5万
查看次数

如何将接口用作C#泛型类型约束?

有没有办法获得以下函数声明?

public bool Foo<T>() where T : interface;
Run Code Online (Sandbox Code Playgroud)

即.其中T是接口类型(类似于where T : class,和struct).

目前我已经满足于:

public bool Foo<T>() where T : IBase;
Run Code Online (Sandbox Code Playgroud)

其中IBase被定义为一个空接口,由我的所有自定义接口继承...不理想,但它应该工作...为什么你不能定义泛型类型必须是一个接口?

对于它的价值,我想要这个,因为Foo它正在做需要接口类型的反射......我可以将它作为普通参数传递并在函数本身中进行必要的检查,但这看起来更加类型安全(而且我假设性能更高一些,因为所有检查都是在编译时完成的).

c# generics interface constraints

155
推荐指数
7
解决办法
11万
查看次数

IntelliJ IDEA从Java接口跳转到实现类

是否有一些快捷方式允许我在界面中创建方法后,选择并跳转到该接口的实现类?

java keyboard-shortcuts interface class intellij-idea

152
推荐指数
6
解决办法
9万
查看次数

为什么我不能在接口中声明静态方法?

该主题大部分都说明了 - 静态方法无法在接口中声明的原因是什么?

public interface ITest {
    public static String test();
}
Run Code Online (Sandbox Code Playgroud)

上面的代码给出了以下错误(至少在Eclipse中):"接口方法ITest.test()的非法修饰符;只允许使用public和abstract".

java methods static interface

148
推荐指数
6
解决办法
10万
查看次数

145
推荐指数
9
解决办法
10万
查看次数

接口是否继承自java中的Object类

接口是否继承自ObjectJava中的类?

如果没有那么我们如何能够在接口实例上调用对象类的方法

public class Test {
    public static void main(String[] args) {
        Employee e = null;
        e.equals(null);
    }
}

interface Employee {
}
Run Code Online (Sandbox Code Playgroud)

java inheritance interface

145
推荐指数
5
解决办法
3万
查看次数

Java 8中的Functional Interface有什么用?

我在Java 8中遇到了一个名为Functional Interface的新术语.

在使用lambda表达式时,我只能找到一个使用此接口的方法.

Java 8提供了一些内置的功能接口,如果我们想要定义任何功能接口,那么我们就可以使用@FunctionalInterface注释.它允许我们在接口中只声明一个方法.

例如:

@FunctionalInterface
interface MathOperation {
    int operation(int a, int b);
}
Run Code Online (Sandbox Code Playgroud)

除了使用lambda表达式之外,它在Java 8中有多大用处?

这里的问题与我提出的问题不同.在使用Lambda表达式时,它询问为什么我们需要功能接口.我的问题是:为什么使用功能接口而不是直接使用lambda表达式

java lambda interface java-8

144
推荐指数
7
解决办法
9万
查看次数

检查实例的类是否实现了接口?

给定一个类实例,是否可以确定它是否实现了特定的接口?据我所知,没有内置函数可以直接执行此操作.我有什么选择(如果有的话)?

php oop interface

142
推荐指数
6
解决办法
8万
查看次数