java - add(Interface) 和 addConfigured(Interface) 方法真的有效吗?

标签 java ant

我正在尝试在自定义 Ant 标记中添加嵌套类型,如 http://ant.apache.org/manual/develop.html#nested-elements 中所述。但我不断收到异常 outer 不支持嵌套的“innerone”元素。

我花了整个上午的时间进行谷歌搜索,但我找不到任何使用此模式来解决此问题的示例、教程或任何帮助,我开始怀疑它是否已实现!

我的构建文件:

<?xml version="1.0"?>
<project name="test" default="tester" basedir="../../..">
  <taskdef name="outer" classname="tester.Outer" classpath="target/classes"/>
  <typedef name="innerone" classname="tester.Outer$InnerOne" classpath="target/classes"/>
  <typedef name="innertwo" classname="tester.Outer$InnerTwo" classpath="target/classes"/>

  <target name="tester">
    <innerone/>
    <innertwo/>
    <outer>
      <innerone/>
      <innertwo/>
    </outer>
  </target>
</project>

Java代码:

public class Outer extends Task
{
  private List<Inner> inners = new ArrayList<Inner>();
  public void add(Inner inner) {
    inners.add(inner);
    System.out.println("Add: ");
  }
  public void addConfigured(Inner inner) {
    inners.add(inner);
    System.out.println("AddConfigured: ");
  }
  public void execute() {
    for (Inner inner : inners) {
      System.out.println("Inner: " + inner.getMsg());
    }
  }

  public interface Inner {
    String getMsg();
  }
  public static class InnerOne implements Inner {
    public String getMsg() {
      return "One";
    }
  }
  public static class InnerTwo implements Inner {
    public String getMsg() {
      return "Two";
    }
  }
}

使用方法 addInner(Inner inner)addConfiguredInner(Inner inner) 都可以,但我希望能够添加实现内部接口(interface)的内部标签,而无需必须在外部类中显式地为它们创建方法。

最佳答案

您的示例与您在 ant 手册中链接的示例非常相似。它们之间有什么区别,一种有效,另一种无效?虽然走了很长的路,但一步一步让它们越来越相似,我发现了区别。

typedef中必须给出loaderRef属性,等于classpathtypedef task的文档说:

Use this to allow multiple tasks/types to be loaded with the same loader, so they can call each other.

使用 antlib 可能会使这个问题不存在,因为它是在一个 ant 脚本行中声明的。

最后答案是:是的,它们确实有效:)

关于java - add(Interface) 和 addConfigured(Interface) 方法真的有效吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12690635/

相关文章:

java - 在Java中实例化集合的集合?

windows-8 - 无法在 Windows 8 x64 上安装 JDK7u21x64

除了发布和调试之外的 Android ant 构建

java - 控制台输出到 WindowBuilder GUI

java - 正确的交互式网站系统设计理念/方法?

java - 在主函数中使用超出范围的变量

perl - 如何限制 perl 进程输出文件的大小?

ant - 如何在 Jmeter 中使用 Apache Ant?

java - Java 中删除注释的脚本

java - Checkstyle报告生成图表报告