无法将布尔方法调用到另一个类中

时间:2017-11-18 18:33:00

标签: java

我在将布尔方法调用到另一个类时遇到了麻烦。无论我尝试什么,程序都找不到变量,或者警告我在静态上下文中尝试使用非静态变量。

我试图访问的布尔代码

public boolean isSame(String title, String author)
{
    return this.title.equals(title) &&
           this.author.equals(author);
}

我用来访问方法的(当前)代码(我知道这是错误的)

public void copyCount(String title, String author)
{
    int numberOfCopy = 0;
    boolean Book.isSame = false;
        if(isSame == true) {
            numberOfCopy++;
        }  
    System.out.println(copyCount);
}

基本上,copyCount方法(来自'Library'类)应该使用2个String参数并使用isSame方法(来自'Book'类)测试它们。如果书籍详细信息与给定的匹配,则isSame返回true,否则返回false。

如何从其他类正确引用isSame方法?感谢。

3 个答案:

答案 0 :(得分:2)

  

如何从其他类正确引用isSame方法?

看起来你需要一个fread类的实例......

Book

答案 1 :(得分:0)

如果您的两种方法都在不同的类中。

您只能在不创建类对象的情况下访问静态方法。如果你的isSame方法是静态的,那么你可以使用Book.isSame()进行访问,但如果你的isSame方法不是静态的,那么你需要创建一个Book类的对象,然后使用该对象访问isSame方法。 p>

请参阅以下代码:

Book book = new Book();
boolean result = book.isSame("title","author");

如果有的话,在构造函数中传递变量。顺便说一句,代码只是展示流程的一个例子。

答案 2 :(得分:0)

根据要求,早期的答案可能是正确的,但这听起来像需要equals方法。

按照惯例,Java对象都有equals方法,当您希望确定两个对象的相等性时,应该重写它。在这里,既然你要将String与平等联系起来,那么推断平等就是你真正想要的就更难了。

以下是一个例子:

public boolean equals(Book other) {
    return null != other && this.title.equals(other.title) &&
       this.author.equals(other.author);
}

您需要修改copyCount方法,以取Book而非authortitle的实例,但它必须是整体设计更好。