Java 返回接口实例数组

Java 返回接口实例数组,java,jaxb,glassfish,jax-rs,jersey-2.0,Java,Jaxb,Glassfish,Jax Rs,Jersey 2.0,我正在做一个小项目,在这个项目中,我必须返回一个特定接口的实例数组。当我返回接口的单个实例时,一切正常。返回实例数组时,会出现以下错误: 编辑2013年8月2日 如果我使用抽象类,同样的代码可以完美地工作。接口似乎是个问题 如何处理使用JAXB和JAX-RS返回接口实例数组的问题 我正在使用Gassfish 4,并尝试了以下方法。数据代码: @XmlRootElement public interface Person { @XmlAttribute public String ge

我正在做一个小项目,在这个项目中,我必须返回一个特定接口的实例数组。当我返回接口的单个实例时,一切正常。返回实例数组时,会出现以下错误:


编辑2013年8月2日

如果我使用抽象类,同样的代码可以完美地工作。接口似乎是个问题


如何处理使用JAXB和JAX-RS返回接口实例数组的问题

我正在使用Gassfish 4,并尝试了以下方法。数据代码:

@XmlRootElement
public interface Person {
  @XmlAttribute
  public String getId();
  @XmlElement
  public String getName();
}

@XmlRootElement
public class P1 implements Person {

  @Override
  @XmlAttribute
  public String getId() {
    return "1";
  }

  @Override
  @XmlElement
  public String getName() {
    return this.getClass().getSimpleName();
  }
}

@XmlRootElement
public class P2 implements Person {

  @Override
  @XmlAttribute
  public String getId() {
    return "2";
  }

  @Override
  @XmlElement
  public String getName() {
    return this.getClass().getSimpleName();
  }
}
JAX-RS代码:

Person[] persons = {new P1(), new P2()};

@GET
@Path("/query")
@Produces({ MediaType.APPLICATION_JSON })
public Person[] findByQuery(@QueryParam("name") String name) {
  return persons;
}

谢谢

尝试指向接口类中的实现类,如:

@XmlRootElement
@XmlSeeAlso({P1.class, P2.class})
public interface Person {
  @XmlAttribute
  public String getId();
  @XmlElement
  public String getName();
}

尝试指向接口类中的实现类,如:

@XmlRootElement
@XmlSeeAlso({P1.class, P2.class})
public interface Person {
  @XmlAttribute
  public String getId();
  @XmlElement
  public String getName();
}

如果将默认空构造函数添加到
P1
P2
类(
P1(){super();}
),会发生什么情况?@drvdijk感谢您的回复。我在向P1和P2类添加默认空构造函数时引发了相同的异常。如果向
P1
P2
类(
P1(){super();}
)添加默认空构造函数会发生什么情况?@drvdijk谢谢您的回复。当我在P1和P2类中添加默认的空构造函数时,也会引发同样的异常。谢谢你的回答。我试过了,但也出现了同样的异常。如果我使用抽象类,同样的代码也能完美地工作。接口似乎是个问题。您知道JAX-B可以处理一系列接口吗?谢谢您的回答。我试过了,但也出现了同样的异常。如果我使用抽象类,同样的代码也能完美地工作。接口似乎是个问题。您知道JAX-B可以处理一系列接口吗?