您只是在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...
}
}