你只是在ArgumentParsers
类中调用一个静态方法。您应该查看实现ArgumentParsers.newArgumentParser
以查看使用了哪个实现ArgumentParser
。
这也不是 Java 特有的。例如,类似File.OpenRead
和的方法XmlReader.Create
都使用抽象类的返回类型声明——同样的事情也适用于接口。
例如,如果您想将 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...
}
}