Java – there is no setter method in the interface

I have a concrete class a that implements interface B

B ref = new A();

code:

public interface B{
  public abstract String[] getWords();
}

public class A implements B {
  private String[] words = new String[] {};
  public void setWords(String[] words){
    this.words = words;
  }
  public String[] getWords(){
    return this.words;
  }
 }

In interface B, I only have getter method but no setter method, although class A has it

So when I do this: B ref = new a();, This code will work. How will I set the word?

Solution

If the interface does expose it, it must be converted back to the original type

if (ref instanceof A)
   ((A) ref).setWords(words);
else
   // something else.

A better solution is to add methods to the interface

The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>