Java 关于对象初始化(或缺少初始化)的混淆 accountmanager对象的初始化是否正确?我(有限的)理解是初始化涉及=
比如Java 关于对象初始化(或缺少初始化)的混淆 accountmanager对象的初始化是否正确?我(有限的)理解是初始化涉及=,java,object,initialization,Java,Object,Initialization,比如 this.accountmanager=accountmanager; 如果这是真的,那么对我来说,这表明这个.accountmanager=accountmanager是有效的?(我假设这是不正确的,但只是想提供我的思考过程) 我之前收到一个返回给我的错误,指出不能从静态上下文引用非静态变量事务 为了纠正这一点,我包括: a=10; 因此,在中属于静态方法的范围。这合法/正确吗 错误消息: Transaction t=new Transaction(); “变量accountma
this.accountmanager=accountmanager;
如果这是真的,那么对我来说,这表明这个.accountmanager=accountmanager是有效的?(我假设这是不正确的,但只是想提供我的思考过程)
a=10;
因此,在中属于静态方法的范围。这合法/正确吗
错误消息:
Transaction t=new Transaction();
“变量accountmanager可能尚未初始化”这就是问题所在:
AccountManager accountmanager= new AccountManager (account, t, accountmanager);
您正在声明一个变量,并尝试从该变量中读取初始值所在的语句
下面是一个简单的例子,说明这是多么荒谬:
AccountManager accountmanager= new AccountManager (account, t, accountmanager);
您希望x
的值是多少?您说过它的初始值应该是y
的值加上它的当前值。。。但它没有当前值,因为您正试图找到它的初始值
我强烈怀疑你根本就不应该有他们的构造函数参数。为什么一个AccountManager
需要引用另一个?你应该:
- 删除
字段accountmanager
- 删除
构造函数参数accountmanager
- 将局部变量声明和初始化更改为:
(注意int y = 10; int x = y + x;
中的大写字母M,以遵循Java命名约定。为了清楚起见,我可能也会将accountManager
重命名为t
)transaction
main
方法的范围内,是的。但这似乎与您的问题无关,因为您使用了accountmanager
。每个帖子你应该问一个问题。t
变量部分与问题的其余部分无关,您应该删除它。对不起,我认为这是导致错误的原因。错误消息没有提到t
,您以前收到的错误已经消失了,对吗?你读过我的答案了吗?它充分解释了这个问题。错误已经消失,被一个新的错误所取代:lab9类中的构造函数AccountManager。AccountManager不能应用于给定的类型;必需:lab9.Account,java.util.Scanner,lab9.Transaction found:lab9.Account,lab9.Transaction原因:实际参数列表和形式参数列表在length@IronUhlan:这不是您发布的代码,因为您发布的代码没有Scanner
构造函数参数。但不管怎样,这都是一个不同的问题,你应该调查并尝试自己解决,如果绝对必要的话,问一个新问题。堆栈溢出不是交互式调试服务。
int y = 10;
int x = y + x;
AccountManager accountManager= new AccountManager(account, t);