gpt4 book ai didi

java - 关于创建类对象的机制

转载 作者:行者123 更新时间:2023-12-01 17:33:32 25 4
gpt4 key购买 nike

我看到一个类“AttributeSelectedClassifier”曾经通过以下方式创建:

AttributeSelectedClassifier classifier = new AttributeSelectedClassifier();

classifier.setClassifier(base);
classifier.setEvaluator(eval);

上面这个对我来说看起来很自然。但下面这个怎么样?

classifier = new AttributeSelectedClassifier();
((AttributeSelectedClassifier)classifier).setClassifier(base);
((AttributeSelectedClassifier)classifier).setEvaluator(eval);

我认为应该是对的,但是我不太清楚将分类器定义为((AttributeSelectedClassifier)classifier)的方式,如何理解这个用法?

最佳答案

这意味着分类器变量被声明为 AttributeSelectedClassifier 的父类(super class)或超接口(interface),并且您需要调用未在类或接口(interface)中定义的方法,而仅在 AttributeSelectedClassifier 上定义。 。此表示法将变量强制转换AttributeSelectedClassifier :

Object classifier = new AttributeSelectedClassifier();
// classifier is a AttributeSelectedClassifier, but references as Object
// to call the following method, we need to cast it to AttributeSelectedClassifier
((AttributeSelectedClassifier)classifier).setClassifier(base);
((AttributeSelectedClassifier)classifier).setEvaluator(eval);

这通常是设计问题的征兆。方法应该位于父类(super class)或接口(interface)中,或者变量应声明为 AttributeSelectedClassifier .

关于java - 关于创建类对象的机制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8638109/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com