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);
尽管有语法:
- 你试图将一座建筑物转换为谷仓-这是不正确的。谷仓是一种食物 建筑物,但建筑物不是谷仓
- 您尝试将建筑强制转换为对象。这样就好了
- 你试着用绳子把一座建筑固定住。这是不正确的
- 你试着把谷仓建在一座建筑物上——这很好
buildingbuild1=新谷仓()代码>
object obj1=object(build1)尝试什么代码>?我想您只需要objectobj1=build1代码>(问题中提供的代码示例无法理解您为什么需要它)
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