无法将字符串值设置为setter

时间:2014-09-17 01:51:37

标签: java

MyClass有一个setter但是当我给它赋值时,我得到错误:

java.lang.NoSuchMethodError: MyClass.setValue(Ljava/lang/String;)

MyClassIfc.java

public interface MyClassIfc extends EYSDomainIfc
{     
      public abstract String getValue();

      public abstract void setValue(String paramString);

}

MyClass.java

public class MyClass implements MyClassIfc
{
  protected String value = null;

  public String getValue() 
  {
      return this.value;
  }

  public void setValue(String paramString)
  {
      this.value= paramString;
  } 

}

调用sipnet:

MyClassIfc myClass = ((MyDomainObjectFactoryIfc)MyDomain.getFactory()).getMyInstance();
value = MyUtilities.getValue(utility, data, logger, serviceName);
myClass.setValue(value);

2 个答案:

答案 0 :(得分:0)

这意味着您尝试从编译时使用的那个版本运行该类的不同版本。清理构建目录并重新编译所有内容。

答案 1 :(得分:0)

你能分享你在课堂上写的代码吗?每当你得到NoSuchMethod时,你首先要看的是方法签名。

例如:

  • 修饰符 - 例如public,private等:确保正确访问修饰符,如果您正在调用创建类(对象)实例的方法,并且该方法是私有的,则不会是能够访问它。

  • 方法名称:仔细查看方法名称并确保正确输入。如果您使用的是IDE,请让自动填充帮助您避免错误。

  • 参数列出了它们的数据类型:确保传递给方法的变量/对象的数据类型与方法声明的数据类型(方法期望的内容)匹配。

在你的情况下,我会先找参数列表。

如果您想了解有关方法定义的更多信息,可以访问java参考:http://docs.oracle.com/javase/tutorial/java/javaOO/methods.html

希望这有帮助!