数字是抽象的;无法实例化

时间:2019-11-18 08:58:22

标签: java android android-studio

我最近刚开始学习有关Android Studio编程的教程。一直很好,直到我遇到以下错误:

Number is abstract; cannot be instantiated.

该代码适用于本教程中的人员。 (他使用的是Android Studio 2.2.0.12的旧版本。)我的版本是3.5.1。

public void testNumber(View view) {
    EditText userNumber = (EditText) findViewById(R.id.userNumber);
    Number myNumber = new Number(); /* stuck at this part*/
    myNumber.number = Integer.parseInt(userNumber.getText().toString());
    System.out.println(myNumber.isTriangular());
    System.out.println(myNumber.isSquare());

4 个答案:

答案 0 :(得分:0)

抽象类是无法实例化的类。它们仅充当其他非抽象类的“母亲”类。数字类可能是整数,小数之类的“母”类。

现在,如果您正在学习教程,并且它告诉您创建一个名为Number的类,那么问题是该类与java.lang.Number类混在一起了。如果您有一个指导您实例化java.lang.Number的教程,那么该教程要么过时,要么是完全错误的。

但是我认为您将使用Number作为Number的任何“子”类的容器(就像您通过为Number分配一个Integer在该代码中所做的那样)。在这种情况下,请不要实例化Number,而只需执行以下操作:

Number myNumber = Integer.parseInt(userNumber.getText().toString());

答案 1 :(得分:0)

Number是一个抽象类,它意味着您必须实现它或使用现有的实现之一。 这样您写给我们的代码就可以变成:

Integer myNumber = Integer.parseInt(userNumber.getText().toString());

注意: 我看到您调用了方法 isTriangular() isSquare(),它们都不是Number或Integer(以及Java中的其他数字类型)的一部分。

答案 2 :(得分:0)

感谢您的贡献,但是问题是代码前面的错字方式。 这些评论确实有所帮助,我学到了一些关键点。

致谢

答案 3 :(得分:-1)

您不能使数字成为表象类。您应该使用以下子类之一:BigDecimal,BigInteger,Byte,Double,Float,Integer,Long和Short。

还有行

Number myNumber = new Number();

完全没有用,您可以像这样直接声明和分配:

Number num = Integer.parseInt(userNumber.getText().toString());