java 类声明_java – 内部类声明和初始化

我习惯用C编写代码,但必须将项目从C转换为Java.在C中使用数据结构非常简单.我试图复制相同的东西,但是如Java inner class and static nested class.在网上阅读了几个例子,并尝试了不同的版本,到目前为止这是我得到的:

public class Main {

public static void main( String[] args ) {

...

ClassOuter outerObj = new ClassOuter();

ClassOuter.DataInner value = outerObj.new ClassOuter.DataInner();

}

}

class ClassOuter{

public static class DataInner{

public int x;

}

...

protected void getNo()

{ value.x=Integer.parseInt("493");

}

}

但是,当我尝试编译时,它给了我错误:

$javac -cp "./" Main.java

Main.java:15: error: '(' expected

ClassOuter.DataInner value = outerObj.new ClassOuter.DataInner();

关于这里缺少什么的任何线索?

解决方法:

ClassOuter.DataInner value = outerObj.new ClassOuter.DataInner();

此语法适用于内部类(即非静态嵌套类).如果这是您想要的,请从公共静态类DataInner中删除static关键字.

编辑:

也改变

ClassOuter.DataInner value = outerObj.new ClassOuter.DataInner();

ClassOuter.DataInner value = outerObj.new DataInner();

使用封闭实例初始化内部实例时,不指定外部类型.

并且行outerObj.value.x = Integer.parseInt(“493”);在外部类的getNo()方法中无效,因为outerObj和value是只有main方法知道的局部变量.

如果希望外部实例更新其任何内部实例,则必须获取对它的引用.这是一种方法:

public class Main {

public static void main( String[] args ) {

...

ClassOuter outerObj = new ClassOuter();

ClassOuter.DataInner value = outerObj.new DataInner();

outerObj.setInner (value);

}

}

class ClassOuter{

public static class DataInner{

public int x;

}

...

private DataInner inner = null;

public void setInner (DataInner inner) {

this.inner = inner;

}

protected void getNo()

{

inner.x=Integer.parseInt("493");

}

}

标签:java,object,inner-classes,nested,class

来源: https://codeday.me/bug/20190528/1170140.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值