标签: interface

必需和提供的接口有什么区别

我一般都知道:

接口是一种引用类型,它类似于一个类,它只能包含常量,方法签名,默认方法,静态方法和嵌套类型.方法体仅适用于默认方法和静态方法.接口无法实例化 - 它们只能由类实现或由其他接口扩展?

但是必需和提供的接口有什么区别?

java oop uml modeling interface

9
推荐指数
3
解决办法
9724
查看次数

实现View.IOnTouchListener接口

在Xamarin中,我编写了一个实现View.IOnTouchListener接口的类.

这是我的代码:

public class OnTouchListener : View.IOnTouchListener
{
    public bool OnTouch (View v, MotionEvent e)
    {
        return true;
    }

    void IDisposable.Dispose ()
    {
        throw new NotImplementedException ();
    }

    IntPtr Android.Runtime.IJavaObject.Handle {
        get {
            throw new NotImplementedException ();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

IDisposable.DisposeAndroid.Runtime.IJavaObject.Handle代码项需要什么值,而不是throw new NotImplementedException ()代码?

提前致谢

android dispose interface ontouchlistener xamarin

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

带界面的枚举 - 一般如何做?

如果我有一组枚举,并希望让它们都实现一个接口,这是一般的正确方法吗?

枚举:

public enum MentalSkill implements SkillType {
    ACADEMICS,COMPUTER,CRAFTS,INVESTIGATION,MEDICINE,OCCULT,POLITICS,SCIENCE;
    private static final int UNTRAINED_PENALTY = -3;
    @Override
    public SkillType fromValue(String value) {
        return valueOf(value);
    }
    @Override
    public int getUntrainedPenalty() {
        return UNTRAINED_PENALTY;
    }
}
Run Code Online (Sandbox Code Playgroud)

接口:

public interface SkillType {

SkillType fromValue(String value);  
int getUntrainedPenalty();
}
Run Code Online (Sandbox Code Playgroud)

持有班级(我怀疑这是不对的):

public class SkillsSet<T extends SkillType> {
    T t;
    Map<T,Integer> skills = new HashMap<>();
    public SkillsSet(String[] skills) {
        for (String string : skills) {
            addSkill(string,t.getUntrainedPenalty());
        }
    }
    private void addSkill(String skillString,Integer value) {
        skills.put((T) t.fromValue(skillString), …
Run Code Online (Sandbox Code Playgroud)

java enums interface

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

在Typescript中混合使用接口

我有一个包含80多个方法的类,每个方法都接受一个包含一些已定义接口的对象.

class Stuff {
   /* many more */
   getAccount(req: IAccount, callback: ICallback) {
      return this._call('getAccount', req, callback);
   }

   getIds(req: IIDs, callback: ICallback) {
      return this._call('getIds', req, callback);
   }
   /* many more */
}
Run Code Online (Sandbox Code Playgroud)

非常'无聊'的东西,因为它只是映射到底层_call方法,并使每种方法的类型安全.

但有时这些reqparam对象是由2个或更多接口组成的,而不是每次创建另一个接口都有"尴尬",如下所示:

export interface ILoled extends IAccount {
   loled: boolean;
}

export interface IRofloled extends ILoled {
   rofled: boolean;
}

class Stuff {
  getLols(req: ILoled){
  }

  getRofls(req: IRofloled){
  }
}
Run Code Online (Sandbox Code Playgroud)

有什么方法我可以把它作为方法参数列表中的接口的"内联"混合?喜欢(显然不起作用):

class Stuff {
  getMoreStuff(req: <{} extends IAccount, ITime>) {
  }
}
Run Code Online (Sandbox Code Playgroud)

interface typescript

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

Swift在协议中初始化常量变量

在Java中,您可以在接口中初始化最终的静态字符串.Swift中还有一个方法吗?

initialization interface swift

9
推荐指数
2
解决办法
3882
查看次数

为什么实现具有类型约束的通用接口的泛型类需要重复这些约束?

假设我有一个以下的C#界面:

public interface IInterface<T> where T : SomeClass
{
    void InterfaceMethod();
}
Run Code Online (Sandbox Code Playgroud)

而SomeClass的定义如下:

public class SomeClass
{
    public void SomeMethod();
}
Run Code Online (Sandbox Code Playgroud)

现在我想定义接口的实现,它不会编译:

public class InterfaceImpl<T> : IInterface<T> 
{
    public void InterfaceMethod()
    {
        T test = default(T);
        test.SomeMethod(); //Gives Error
    }
}
Run Code Online (Sandbox Code Playgroud)

在我改为之前:

public class InterfaceImpl<T> : IInterface<T> where T : SomeClass
{
    public void InterfaceMethod()
    {
        T test = default(T);
        test.SomeMethod(); //Compiles fine
    }
}
Run Code Online (Sandbox Code Playgroud)

类型约束是否也从接口"继承"(不是正确的词,我知道)是否有意义?

.net c# generics inheritance interface

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

Android - 为什么使用接口被认为是在Activity和Fragment之间进行通信的最佳实践?

在本文档"与其他片段进行通信"中,Google告诉我们,传递Activity和Fragment的最佳实践是实现一个接口.然后,此接口可以由Fragment调用并在Activity中执行必要的行为.

但也有一种黑客方式来做到这一点.通过方法"getActivity()"直接获取Activity ,然后我们可以使用它下面的所有"公共方法".

这让我很困惑.因为我无法想到使用黑客方式做任何这一点的任何关键缺点.

我头脑中出现的第一种方法的优点是:

  1. 我可以在我的活动下限制"资源可访问性".但由于Fragment能够调用"getActivity()",因此它实际上可以访问其中的所有"公共"方法.所以这不能说服我.
  2. 代码中更具可读性和故事性.使用第一种方法,代码告诉我们"此活动仅打开片段的这些特定可访问区域".我们可以通过查看Activity中的代码直接知道"Fragment内部可能会干扰Activity的内容" .否则,我们需要打开Fragment下的代码来查看它的作用.

好吧,在我总结出这些之后,我对自己有点说服了.但坦率地说,我真的想要一些其他坚实的,并且必须有理由这样做.任何想法或文件将非常感谢!!

java android interface android-fragments android-activity

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

接口的组成[Golang]

有没有办法让接口还包含Go中另一个接口定义的方法?

例如:

type BasicDatabase interface {
    CreateTable(string) error
    DeleteTable(string) error
}

type SpecificDatabase interface {
    CreateUserRecord(User) error
}
Run Code Online (Sandbox Code Playgroud)

我想要一种方法来指定SpecificDatabase接口包含BasicDatabase接口.类似于Go的方式让你做结构的组合.

这样我的方法可以采用一种实现SpecificDatabase但仍然可以调用CreateTable()它的类型.

oop interface go

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

Spring autowire接口

我有一个接口IMenuItem

public interface IMenuItem {

    String getIconClass();
    void setIconClass(String iconClass);

    String getLink();
    void setLink(String link);

    String getText();
    void setText(String text);

}
Run Code Online (Sandbox Code Playgroud)

然后我有这个接口的实现

@Component
@Scope("prototype")
public class MenuItem implements IMenuItem {

    private String iconClass;
    private String link;
    private String text;

    public MenuItem(String iconClass, String link, String text) {
        this.iconClass = iconClass;
        this.link = link;
        this.text = text;
    }

    //setters and getters

}
Run Code Online (Sandbox Code Playgroud)

有没有办法只使用IMenuItem接口从配置类创建多个MenuItem实例?用@autowired还是什么?也可以通过指定构造函数的参数来自动装配?

java spring interface autowired

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

无法为TreeMap解析方法tailMap

为什么TreeMap类型Map没有定义方法tailMapheadMap.

Map<String, String> map = new TreeMap<>();
map.tailMap();  //cannot resolve method tailMap
Run Code Online (Sandbox Code Playgroud)

使用显式转换它可以工作:

((TreeMap<String, String>) map).tailMap("a");
Run Code Online (Sandbox Code Playgroud)

随着NavigableMap一切都很好:

NavigableMap<String, String> map1 = new TreeMap<>();
map1.tailMap("a");
Run Code Online (Sandbox Code Playgroud)

如果我是对的,因为界面Map缺少相应的方法,尽管面对对象map是类的具体实现TreeMap,当然确实拥有这样的方法.

只是寻找更详细的解释.

谢谢!

java dictionary interface treemap

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