gpt4 book ai didi

java - 使用 InterfaceType 进行对象初始化

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:28:04 24 4
gpt4 key购买 nike

我是 java 编程语言的新手。过去两年我一直在用 c# 编程。当我浏览 java 程序时,我找到了如下代码。

ArgumentParser parser = ArgumentParsers.newArgumentParser("text");

其中 ArgumentParser 是一个接口(interface)类型,而 ArgumentParsers 是一个类。但是我在 ArgumentParsers 中找不到 ArgumentParser 的任何实现。我们如何通过使用不实现该接口(interface)的类初始化对象来创建接口(interface)类型的对象。我不知道这在 c# 中是可能的。请帮我解释一下

谢谢

最佳答案

您只是在 ArgumentParsers 类中调用一个静态方法。您应该查看 ArgumentParsers.newArgumentParser 的实现,以了解使用了 ArgumentParser 的哪个实现。

这也不是 Java 特有的。例如,类似 File.OpenRead 的方法和 XmlReader.Create两者都用作为抽象类的返回类型声明 - 同样的事情也适用于接口(interface)。

例如,如果您想将 Java 代码转换为 C#,这将是有效的:

public interface IArgumentParser
{
Configuration Parse(string[] arguments);
}

public static class ArgumentParsers
{
public static IArgumentParser(string file)
{
return new FileArgumentParser(file);
}
}

internal class FileArgumentParser : IArgumentParser
{
private readonly string file;

internal FileArgumentParser(string file)
{
this.file = file;
}

public Configuration Parse(string[] arguments)
{
// Presumably use the file somewhere...
}
}

关于java - 使用 InterfaceType 进行对象初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18336973/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com