标签: interface

使用和实现关系uml接口的区别

使用和实现接口关系有什么区别?如何将它们实现到代码中(例如java)?(也许更好地解释我的问题:我有一个界面,说我和两个类,说A和B.A类意识到我和B级使用I.这些关系之间有什么区别以及它应该如何实现?)..我找到了很多定义,但我仍然没有看到差异.

非常感谢你

java oop uml interface relationships

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

`bufio.Writer`或`io.Writer`?

我有一个函数将数据写入任何实现接口的Write(b []byte) (n int, err error)方法.现在在我的程序中,我写了一个实际的Conn,但遵循最佳实践(https://dave.cheney.net/2016/08/20/solid-go-design),因为我只打电话Write,我想接受最低限度实现该方法的接口.为此,我接受带接口的参数io.Writer.

由于我的功能可以非常快速地输出大量数据,我应该接受bufio.Writer吗?或者功能的消费者责任是使用缓冲编写器而不是普通编写器?什么是最佳做法?

interface go

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

如何将Go接口扩展到另一个接口?

我有一个Go界面:

type People interface {
    GetName() string
    GetAge() string
}
Run Code Online (Sandbox Code Playgroud)

现在我想要另一个界面Student:

1.

type Student interface {
    GetName() string
    GetAge() string
    GetScore() int
    GetSchoolName() string
}
Run Code Online (Sandbox Code Playgroud)

但我不想写重复的函数GetName和GetAge.

有没有一种方法,以避免写入GetName和GetAge在Student界面?喜欢:

2.

type Student interface {
    People interface
    GetScore() int
    GetSchoolName() string
}
Run Code Online (Sandbox Code Playgroud)

interface go

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

如何故意在打字稿中定义一个"空接口"

TypeScript允许检查是否检查未知属性.下列

interface MyInterface {
  key: string
}

const myVar: MyInterface = {
  asda: 'asdfadf'
}
Run Code Online (Sandbox Code Playgroud)

会失败的

输入'{asda:string; }'不能赋值为'MyInterface'.
对象文字只能指定已知属性,'myInterface'类型中不存在'asda'.

但是,此语句将编译没有任何问题.空接口将接受任何值

interface EmptyInterface {
}

const myVar: EmptyInterface = {
  asda: 'asdfadf'
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我真的想为可能没有任何属性的空对象定义类型,该怎么办?我怎样才能在打字稿中实现这一目标?

interface typescript

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

我该怎么称呼创建实例的接口

我应该如何调用具有返回类的新实例的抽象方法的接口?

例如,我有一个Foo类,它execute是一个Parser实现类的实例Runnable,它由一个实现ParserXXX接口的类创建.(不是直接创建Parser实例,为了允许使用自定义Parser)我该ParserXXX怎么称呼?

@FunctionalInterface // >Java 8
interface ParserXXX {
    Runnable get(Data data);
}

class Parser implements Runnable {
    ...
}

class Foo {
    private ParserXXX;

    public Foo() {
        xxx = new ParserXXX() { // anonymous class
            @Override
            public Runnable get(Data data) {
                return new Parser(data);
            }
        }
        xxx = Parser::new; // using method reference(>Java 8)
        xxx = data -> new Parser(data); // using lambda …
Run Code Online (Sandbox Code Playgroud)

java oop interface

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

我不知道如何使用类类型作为参数

所以我正在创建一个插件插件,但这并不是那么重要.

我有一个Selection类,它保存有关x,z,宽度,深度内容的2D区域的信息.在某个点上,矩形或椭圆将填充到该选择中.我的Ellipse和Rectangle类实现了一个接口Shape.

在Selection的consturctor中,我想确定以后使用的形状的类型.我的第一个想法是传递类类型

public Selection(Class<Shape> shapeType) {
Run Code Online (Sandbox Code Playgroud)

所以我之后可以创建该类的对象

Constructor<Shape> cons = shapeType.getConstructor(//Well I also don't know what belongs here);
Shape s = cons.newInstance(this);
Run Code Online (Sandbox Code Playgroud)

最后我得到了一个N​​ullpointerException,因为Shape接口没有构造函数.

我很困惑.我应该将Shape接口更改为抽象类,还是只在构造函数中传递一些像ELLIPSE和RECTANGLE这样的int ?有人知道我能做什么吗?

在此先感谢Mighty One

java interface getconstructor type-parameter

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

为什么不能通过不太具体的功能来实现Java接口

为什么我不能用Java做到这一点:

interface Context{
    void add(Integer o);
}
class Subclass implements Context{
    @Override
    public void add(Object o){...}
}
Run Code Online (Sandbox Code Playgroud)

难道Subclass.add不会实现Context.add,因为它添加(Object)可以执行所有add(Integer)可以吗?

这有什么好办法?

现在我正在做一种丑陋的方式:

private void actuallyAdd(Object o){...}
public void add(Object o){actuallyAdd(o);}
public void add(Integer o){actuallyAdd(o);}
Run Code Online (Sandbox Code Playgroud)

编辑:这不是上述问题的重复.在给定的问题中,超类是具有更通用的"对象"作为参数的超类,而子类更具体.这不起作用,因为更具体的方法可能无法处理任何对象.在我的问题中,子类不如超类特定,这意味着子类总是能够处理超类所需的任何内容.

java oop interface

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

返回私有项的私有内部模块给出"公共接口中的私有类型"错误

在下面的示例中,模块outer具有私有类型Private和私有内部模块inner.inner能够访问Private(因为子模块可以访问其父项的私有项,即使它们没有被公开).

inner定义一个函数not_really_public_interface().虽然它被标记为公开,但它实际上只能用于outer因为inner它本身不公开.

outer.rs

struct Private;
mod inner {
  use super::Private;
  pub fn not_really_public_interface() -> Private {
    Private
  }
}
Run Code Online (Sandbox Code Playgroud)

这编译没有任何问题.

outer应该能够用来inner::not_really_public_interface()获取Private,只要它确保不输出它.所以我们这样做:

pub fn main() {
  let _ = self::inner::not_really_public_interface();
}
Run Code Online (Sandbox Code Playgroud)

对?

标准错误

error[E0446]: private type `Private` in public interface
 --> src/outer.rs:4:3
  |
4 | /   pub fn not_really_public_interface() -> Private {
5 | |     Private …
Run Code Online (Sandbox Code Playgroud)

module private interface public rust

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

为什么有人会在java 1.8中的接口中定义静态方法?

为什么任何人在JAVA 1.8中的接口中定义静态方法?

我需要知道静态方法会派上用场的不同示例/用例/要求.

接口中的静态方法如何对开发人员有益?

java static-methods interface java-8

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

我可以通过GO中的方法扩展错误接口吗?

我和C#一起工作多年,所以我试图在GO中找到相似之处(我对此很新).

我的目标:
我想error通过一种方法来扩展接口,因为Check()我能够error.Check()通过(在我看来)更好的可读代码来调用.

我当前的状态:
我已经学习了如何使用这种语法通过方法扩展类型:

func (foo T) MyExtension() returnType {
    // return something
}
Run Code Online (Sandbox Code Playgroud)

我的问题:
看起来这只适用于类型而不适用于接口.正如我迄今所看到的error是interface,这些会用来许多包来描述自己的错误类型的基础.我不想扩展这个错误类型(从包),而是想扩展接口以涵盖所有.我找不到任何语法.因为我也不知道这个的技术术语(它不是extension-method)我在谷歌搜索时有点迷失.

那么有没有办法error通过一般方法扩展接口?

extension-methods struct interface go

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