2016-07-22 78 views
-1

我想从WebView类访问setName方法,但当我在调用callSetNameFunction中出现错误时出现错误。我创建并创建了新的webview对象,并将其存储在webfragment类中的对象中,但无法访问webview类中的方法。我怎样才能做到这一点。我很久没做java了,还在学习。此方法是一个未定义类型的对象

的WebView类

public class WebView { 

    private String name; 

    public WebView (String name) { 
     this.name = name; 
    } 

    public WebView() { 
     this.name = name; 
    } 

    public void setName(String name) { 
     if(name != null) { 
      this.setName(name); 
     } else { 
      System.out.println("Thats not his name"); 
     } 
    } 

    public String getName() { 
     return name; 
    } 
} 

WebFragment类

public class WebFragment { 

    Object myObject; 

    public WebFragment() { 
     myObject = new WebView(); 
    } 

    public Object getWebView() { 
     return myObject; 
    } 

    public void callSetNameFunction() { 
     myObject.setName(); 
    } 
} 
+0

你的'callSetNameFunction()'中缺少'setName'的参数 – xiaowl

+0

如果解决这个问题并运行它,你会得到一个'StackOverflowError',因为'setName'方法会调用它自己的无限递归呼叫。 – Jesper

回答

2

3更正

  • Object myObject必须WebView myObject;
    如果你想牛逼o使用来自WebView对象的方法,如果要使用它声明的方法,则必须声明类的属性为WebView类型。
    注:还必须更改getter签名public WebView getWebView() {

  • myObject.setName();应该接受一个参数,即:

    public WebView() { 
        this.name = name; // Warning: The assignment to variable name has no effect 
    } 
    
    myObject.setName("name");

  • 构造不带参数ASIGN变量时不会使效果

    必须是:

    public WebView() { 
    } 
    
+1

谢谢,现在明白了。 –

0

改变你的方法,下面

public void setName(String name) { 
    if(name != null) { 
     //this.setName(name); 
     this.name=name; 
    } else { 
     System.out.println("Thats not his name"); 
    } 
} 

而且这样的:

public void callSetNameFunction() { 
    WebView wvob=(WebView)myObject; 
    wvob.setName("ola");  
} 

的setName方法是使用的WebView class.So Object类中引用不能找到它。

+0

干杯,纠正它,并理解它一点点 –

+0

@BashirskCFC恕我直言,铸造不是一个好的选择,设计是错误的(声明'myObject'或任何其他属性作为'对象'不是一个好的做法)。这种解决方案忽略了错误的设计并制造了一个丑陋的解决方法。 –

+1

@JordiCastilla我没有铸造它,我刚刚使用了这个对象,并调用了方法并为它添加了一个参数'myObject.setName(“sk”);'' –

相关问题