Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.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,下面的注释代码是我认为代码未编译的原因,是否正确 class Building { } public class Barn extends Building{ public static void main(String args[]){ Building build1 = new Building(); Barn barn1 = new Barn(); Barn barn2 = (Barn)build1; /**

下面的注释代码是我认为代码未编译的原因,是否正确

class Building {

}


public class Barn extends Building{

    public static void main(String args[]){
        Building build1 = new Building();
        Barn barn1 = new Barn();
        Barn barn2 = (Barn)build1;

        /**
         * Object is not a Building
         * Building is an Object
         */
        Object obj1 = Object(build1);

        /**
         * String is not a Building
         */
        String str1 = String(build1);

        /**
         * Building is not a Barn
         * Barn is a Building
         */
        Building build2 = Building(barn1);
    }

}

插入的评论是我自己的。为什么两个反对票都被否决了,我只是没有意识到强制转换语法是不正确的。

类构建没有接受参数“Barn”的构造函数。
使此构造函数修复:
公共建筑(谷仓){
//将代码放在这里
}

不会编译。没有方法
Object()


应该编译。同样的问题出现了3次。

首先,构建对象应如下所示:

YourClass ref = new YourClass();
其次,尝试在javadoc中检查构造函数对于:

还要注意的是,
Building
只有默认构造函数,因此只有这样才能工作:

Building b = new Building();

如果你想投,不,这是不正确的。Java中的强制转换是通过

   Classname objectname =  (ClassName) src;
如果您试图构造新对象,则需要构造函数,并且可以通过

   Classname objectname = new Classname(constructorArg1, constructorArg2);
最后,如果需要对象的字符串表示,可以使用

   String string = objectname.toString(); 

首先,强制转换语法不正确,应该是

Foo foo = (Foo)bar;
如果您有:

Foo foo = Foo(bar);
尽管有语法:

  • 你试图将一座建筑物转换为谷仓-这是不正确的。谷仓是一种食物 建筑物,但建筑物不是谷仓
  • 您尝试将建筑强制转换为对象。这样就好了
  • 你试着用绳子把一座建筑固定住。这是不正确的
  • 你试着把谷仓建在一座建筑物上——这很好
多个问题:

  • 1号楼不是谷仓,它是一座建筑。如果你需要一个谷仓,它应该声明如下
    buildingbuild1=新谷仓()

  • 不管怎么说,每个实例都是一个对象,您究竟在用
    object obj1=object(build1)尝试什么?我想您只需要
    objectobj1=build1(问题中提供的代码示例无法理解您为什么需要它)

  • 可以使用toString()将对象转换为字符串,因此您的代码应该是
    String str1=build1.toString()

  • 最后,我真的不明白你想用
    buildingbuild2=Building(barn1)做什么

  • 您的假设是正确的,即注释代码是代码未编译的原因。我不知道你们想做什么,但若你们想转换到对象或字符串,你们应该有

        Object obj1 = (Object) build1;             // This is OK, because all classes are 
                                                   // considered to extend Object class
        String str1 = build1.toString();           // You can not cast to String, because
                                                   // neither of your classes extend String class
                                                   // But you can use the toString() method
                                                   // that is defined in Object class
    
        Building build2 = (Building) barn1;        // This is OK, because Barn class extends
                                                   // Building class
    
    <>从C++类名称(object)中提取的语法不存在于java中,只有旧的C类型的CAST语法是(CordNeX)对象。
    希望这有帮助。

    此代码不是有效的Java代码。你想做什么?这是一个SCJP问题。
    Foo foo = Foo(bar);
    
        Object obj1 = (Object) build1;             // This is OK, because all classes are 
                                                   // considered to extend Object class
        String str1 = build1.toString();           // You can not cast to String, because
                                                   // neither of your classes extend String class
                                                   // But you can use the toString() method
                                                   // that is defined in Object class
    
        Building build2 = (Building) barn1;        // This is OK, because Barn class extends
                                                   // Building class