标签: interface

强制用户在Java中声明变量

所以,我一直在研究Java中的抽象类和接口,我想知道是否有一种方法(可能不使用?)来强制用户声明具有某些名称的变量.

我正在使用注释,因此目标是制作一些接口或抽象的东西:

public interface Foo{
    Integer x;
    Double y;
}
Run Code Online (Sandbox Code Playgroud)

然后我希望用户用这些变量类型填充它(尽管类型是可选的,只要它有名称)和名称,按照他们希望它们注释的方式进行注释.这可能吗?

java interface abstract

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

Java:类型参数必须实现接口

我有一个T实现接口的类型,I我如何指定一个方法接受一个T实现的对象I,例如.

public SomeClass(T<implements I> parameter) {
     ....
}
Run Code Online (Sandbox Code Playgroud)

java syntax interface

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

抽象类方法头与接口

我有100个类,它们扩展了一个抽象类.

这些类中的50个将需要具有该方法foo(),该方法在每个类之间变化.

我知道有两种方法可以做到这一点:

Option #1:创建一个单方法interface用foo(),并且implement这interface在类50.

Option #2:将abstract方法标题添加foo()到父类,并将foo()方法留空50个类.

以下哪项是更好的约定?为什么?或者有没有更好的方式我没有想到?

java abstraction interface conventions

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

Java接口代码错误

我无法理解为什么我在下面指出的行上收到错误.如果有特定主题涵盖它,请提供一行(或解释).

public interface Button {
  void press();
}
public class Bomb implements Button {
  public void press() {
    System.out.println("Doesn't work");
  }
  void boom() {
    System.out.println("Exploded");
  }
}
public class Test {
  public static void main(String[] args) {
    Button redButton = new Bomb();
    redButton.press();
    redButton.boom(); // <-- Error is on this line.
  }
}
Run Code Online (Sandbox Code Playgroud)

java interface

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

在Java中获取接口的父接口

我需要通过递归给定对象的所有接口和超类.当父是另一个类时,这很好,但是当一个接口扩展另一个接口时,我得到一个NullPointerException.

这是一个例子:

public class Test {

    private interface Foo {

    }

    private interface Bar extends Foo {

    }

    public static void main(String args[]) {
        System.out.println(Bar.class.getSuperclass().getSimpleName());
    }
}
Run Code Online (Sandbox Code Playgroud)

这会抛出NullPointerException而不是Foo按预期打印.有没有办法获得界面的超类?

java interface class

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

错误:类型<Interface>的未定义方法

我正在使用Repast Symphony实现多代理模拟.我收到以下错误,我认为这与Repast平台无关.所以这里:

我有一个界面:

public interface Located {
  public int getX();
  public int getY();
}
Run Code Online (Sandbox Code Playgroud)

我还有另外两个实现它的类:

public class Carrier implements Located{
  public int getX(){..}
  public int getY(){..} }

public class Gold implements Located{
  public int getX(){..}
  public int getY(){..} }
Run Code Online (Sandbox Code Playgroud)

我还有一个LocateAdder类,它实现了另一个内置接口:

public class LocateAdder<Located> implements GridAdder<Located> {


@Override
public void add(Grid<Located> destination, Located object) 
{
// TODO Auto-generated method stub
destination.moveTo(object, object.getX(), object.getY());

}
                                                                 }
Run Code Online (Sandbox Code Playgroud)

我甚至无法编译代码.我在getX和getY下面得到了红线,其中说"方法getX()未定义为类型".我不确定为什么会发生这种情况,因为界面显然具有两种方法的签名.任何人都可以发现发生了什么事?我在这里先向您的帮助表示感谢 :)

java interface

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

C#中的嵌套接口

我正在尝试实现一个IFunctor接口[Haskell的Fuctor类]和一个Maybe创建两个类的接口:Just和Nothing.

到目前为止,我有:

public interface IFunctor<A> {
    IFunctor<B> fmap<B> (Func<A,B> f);
}

public interface Maybe<A> : IFunctor<A> {
    Maybe<B> fmap<B> (Func<A,B> f);
}

public class Nothing<A> : Maybe<A> {

    public Maybe<B> fmap<B>( Func<A,B> f ){
        return new Nothing<B>();
    }
}
Run Code Online (Sandbox Code Playgroud)

但是我得到了

`Pr.Nothing<A>' does not implement interface member `IFunctor<A>.fmap<B>
(System.Func<A,B>)' and the best implementing candidate `Pr.Nothing<A>.fmap<B>
(System.Func<A,B>)' return type `Pr.Maybe<B>' does not match interface member return
type `IFunctor<B>'
Run Code Online (Sandbox Code Playgroud)

不是Maybe<B>会员IFunctor<B>?

解 …

c# interface

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

为什么我不能对此ArrayList进行排序?

我正在从我的教科书中复制一个例子,但它拒绝编译.我在某个地方打错了吗?出于某种原因,在客户端代码上,Collections.sort(words)不允许程序编译.任何帮助表示赞赏.代码复制自Stuart Reges和Marty Stepp的"构建Java程序"第2版.我试图通过复制来理解它.

该程序应该创建一个CalendarDate对象以放入ArrayList.通过实现CalendarDate的Comparable接口,我可以使用Collections.sort按顺序在该arraylist中对生日进行排序.但是,这不起作用b/c Collections.sort(日期)将无法运行.

客户端代码(包含问题):

import java.util.*;

// Short program that creates a list of birthdays of the
// first 5 U.S. Presidents and that puts them into sorted order.
// We can now use Collections.sort for ArrayList<CalendarDate> b/c CalendarDate implements the Comparable interface. 

public class CalendarDateTest {
    public static void main(String[] args) {
        ArrayList<CalendarDate> dates = new ArrayList<CalendarDate>(); // Creates a new ArrayList of 'CalendarDate' object type.

        // adds a new CalendarDate object with month = 2 and …
Run Code Online (Sandbox Code Playgroud)

java sorting interface arraylist comparable

0
推荐指数
2
解决办法
1229
查看次数

为什么abstract不适用于接口隐式方法?

在阅读JLS规范接口时,我遇到以下短语:

如果接口没有直接的超接口,则接口隐式声明一个公共抽象成员方法m,其中包含签名s,返回类型r和throws子句t,对应于具有签名s的每个公共实例方法m,返回类型r和throws子句t在Object中声明,除非接口显式声明具有相同签名,相同返回类型和兼容throws子句的方法.

所以我的问题是当我们实现一个接口时为什么我们不被强制覆盖在Object类中声明的隐式方法,即使它们在接口中被隐式定义为抽象.希望我能正确对待自己.

谢谢.

java interface abstract jls

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

C#接口设计指南,接口实现接口

在下面的场景中是否有使用接口的设计指南?

我可以在DerivedClass或ISomeInterface接口或两者中声明IDescription.3个选择,什么指导方针可以帮助我确定哪个是最好的.

public interface IDescription
{
    String Description { get; }
}

public interface ISomeInterface
{
    String Name { get; }
    String Description { get; }
}

public class DerivedClass : Base, ISomeInterface, IDescription
{
    public String Description { get; private set; }
}
Run Code Online (Sandbox Code Playgroud)

c# interface

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