Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-理解私有最终自定义类型的返回类型_Java - Fatal编程技术网

Java-理解私有最终自定义类型的返回类型

Java-理解私有最终自定义类型的返回类型,java,Java,我试图理解下面的代码,其中返回类型被视为不兼容 return new PassLine(One, Two, roll); incompatible types: PassLine cannot be converted to TheDie 希望有人能给我一些启示,这样我就可以继续了 我希望得到dieOne+dieTwo的总人数 public class PassLine { private int thePoint; private final TheDie dieOne

我试图理解下面的代码,其中返回类型被视为不兼容

 return new PassLine(One, Two, roll);
 incompatible types: PassLine cannot be converted to TheDie
希望有人能给我一些启示,这样我就可以继续了

我希望得到dieOne+dieTwo的总人数

public class PassLine {
    private int thePoint;

    private final TheDie dieOne;
    private final TheDie dieTwo;
    private final TheDie rollTheDie;

    public PassLine(TheDie dieOne, TheDie dieTwo, TheDie rollTheDie) {
        super();
        this.dieOne = dieOne;
        this.dieTwo = dieTwo;
        this.rollTheDie = rollTheDie;
    }

    public TheDie dieOne() {
        TheDie obj = new TheDie();
        obj.rollTheDie();
        return dieOne;
    }

    public TheDie dieTwo() {
        TheDie obj = new TheDie();
        obj.rollTheDie();
        return dieTwo;
    }

    public TheDie rollTheDie() {
        dieOne();
        dieTwo();
        return rollTheDie;
    }

        public PassLine passLine() {

    TheDie One = dieOne();
    TheDie Two = dieTwo();
    TheDie roll = rollTheDie();

    return new PassLine(One, Two, roll);
}

    public static void main(String[] args) {
        System.exit(0);
    }
}
从公开课到最后一节课

    public int rollTheDie() {

    Random rand = new Random();
    oneDie = rand.nextInt(6) + 1;

    return oneDie;

    }
新的错误消息如下所示:

关于: 返回新的通行线(一、二、滚)

错误:

     Incompatible Type: TheDiecannot be converted to String
     Incompatible Type: TheDiecannot be converted to String
     Introduce...
     May split declaration into a declaration and assignment 
     Flip operands of the binary operator

这个错误再清楚不过了

public TheDie PassLine() {

    TheDie One = dieOne();
    TheDie Two = dieTwo();
    TheDie roll = rollTheDie();

    return new PassLine(One, Two, roll);
}
指定该方法应返回一个
die
对象,同时返回一个
PassLine
对象

根据您的错误消息

不兼容类型:无法将PassLine转换为die

两种类型都不兼容,请将方法更改为

public PassLine PassLine() {

    TheDie One = dieOne();
    TheDie Two = dieTwo();
    TheDie roll = rollTheDie();

    return new PassLine(One, Two, roll);
}

也许你真的想通过调用一个方法来返回一个
TheDie
,该方法在新的
PassLine
对象上返回
TheDie

你有两种不同的类类型:TheDie和PassLine。假设TheDie不是从PassLine扩展的类,那么您将拥有不兼容的类型

public TheDie PassLine() {
        ...
        return new PassLine(One, Two, roll);
    }
方法头声明您应该返回一个die的对象

在您的代码中:

public TheDie PassLine() {

TheDie One = dieOne();
TheDie Two = dieTwo();
TheDie roll = rollTheDie();

return new PassLine(One, Two, roll);
}
您正在尝试将PassLine作为die返回。
public-TheDie-PassLine()
更改为
public-PassLine-PassLine()
方法
PassLine
(奇数名称,与类同名…)声明为返回
TheDie
对象,但返回
PassLine
对象,因此会出现错误

您必须将方法的返回类型更改为
PassLine
,或返回一个
die
对象

您真的希望有一个与类同名的方法吗?它不是一个编辑不好的构造函数吗

请注意:Java命名约定是:

  • 包名称和方法名称的lowerCamelCase
  • 类和接口名称的大写字母

您有一个带有方法的类
PassLine
(应该是
PassLine

很好,谢谢您的解释。现在返回正确的类型时,它会说——不兼容的类型:TheDie不能转换为String——这修改了错误type@S_HereToLearn请发布您的新返回声明。@S_在此了解您的新方法是否正确。也许有一种方法您没有添加在返回字符串的地方,而您应该返回一个
PassLine
?您当前的类对我来说编译得很好。@S_此处根据您的代码学习,您不应该像您期望的那样使用
字符串
。你试过做一个干净的n型吗?看起来编译后的代码和你给我们看的不一样。谢谢你对定义的帮助。这是一个明确的解释该方法已命名为
passLine
passLine
是否为返回类型。现在是,在编辑之前,有一个
passLine
方法,返回类型为
TheDie