gpt4 book ai didi

Java 对象作用域

转载 作者:行者123 更新时间:2023-12-01 23:15:30 26 4
gpt4 key购买 nike

我试图根据条件创建一个对象,因此对象创建在条件的范围内,但是我需要查看该范围之外的对象。我以为将其添加到 map 中会起作用,但事实并非如此。考虑以下示例:

TestModel.java

public class TestModel {
private String text;
public void setText(String text){
this.text = text;}
public String getText(){
return this.text;}
}

ScopeTest.java

import java.util.*;
class ScopeTest {

public static void main(String[] args) {

TestModel testModel;
Map<String, Object> myModel = new HashMap<String, Object>();

for (int i=1; i<2; i++){ // if a certain condition is met, create an object as below
testModel = new TestModel();
testModel.setText("test text");
myModel.put("test", testModel);
}

for (Map.Entry<String, Object> entry : myModel.entrySet()) {
String key = entry.getKey();
Object value = entry.getValue();
System.out.println("key=" + key); // I can see the key value
System.out.println("value.getText()=" + value.getText()); // but can't see testModel object. I am not sure how to resolve.
}
}
}

干杯,

杰弗里·雷尼。

最佳答案

您必须使用您的类来转换对象值。像这样。

System.out.println("value.getText()=" + ((TestModel) value).getText());

如果你不想转换对象,那么你可以这样使用。

class ScopeTest {

public static void main(String[] args) {

TestModel testModel;
Map<String, TestModel> myModel = new HashMap<String, TestModel>();//Use TestModel
instead of object

for (int i=1; i<2; i++){
testModel = new TestModel();
testModel.setText("test text");
myModel.put("test", testModel);
}

for (Entry<String, TestModel> entry : myModel.entrySet()) {
String key = entry.getKey();
TestModel value = entry.getValue();
System.out.println("key=" + key);
System.out.println("value.getText()=" + value.getText());
}
}
}

关于Java 对象作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21279561/

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