gpt4 book ai didi

java - 如何在Java中修剪对象的某些字段?

转载 作者:行者123 更新时间:2023-12-01 10:44:12 24 4
gpt4 key购买 nike

假设我们有一个 Object 类型的对象 obj,这样 System.out.println(obj) 会生成 {a=一些文本,b=更多文本,c=更多文本}

现在我们想要创建一个新对象obj2,它只是{a=Some text}(即字段bc 是从 obj 中修剪掉的)。所以我们定义一个类A如下:

class A {
String a;
}

然后我们按如下方式初始化obj2:

A obj2 = (A) obj

不幸的是,我在执行此操作时遇到运行时错误。

问题:我们如何定义上面概述的 obj2

最佳答案

您收到异常的原因是 obj仅属于 Object 类型;你不能“神奇地”把它变成 A所以它适合 obj2 。在 Java 中,您只能将对象转换为它已经的类型;你无法制作出 A 以外的东西一个A 。相反,您必须手动复制属性,即设置 obj2.aobj.a .

分配 obj2.a = obj.a 的一种替代方法就是使两者objobj2类型 A ,其中 obj 也是一种更具体的类型 B 。例如,假设您要定义 A类如下:

public class A {

public String a = "Some text";

}

然后您可以定义 B如:

public class B extends A {

public String b = "Some more text";
public String c = "Even more text";

}

最后,您可以这样创建对象:

B obj = new B();
A obj2 = obj;

System.out.println(obj2.a); // Prints "Some text"
System.out.println(obj2.b); // Throws an error

请注意,在第二种方法中,obj2 仍然具有属性 bc ;它们只是无法访问。

关于java - 如何在Java中修剪对象的某些字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34280716/

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