当前位置: 首页 > 知识库问答 >
问题:

Java:如何有效地部分匹配2个类的成员值?

白宏放
2023-03-14

我有两个类(第三方):一个代表GETendpoint响应,另一个代表PUTendpoint主体。

我的目标是使用getendpoint获取资源当前状态,并使用putendpoint更新它。

似乎put类是get类的子集。

例如:

class A{
 int a;
 int b;
 int c;
}

class B{
 int a;
 int b;
 int c;
 int d;
}

所以B“包括”A成员,等等。

在实践中,B扩展了A(尽管同时我没有这样实现)。

那么,处理以下情况的正确方法是什么?

Services serv = new Services();
A a = new A();
B b = serv.get();

/*

除了使用长赋值列表方法外,我如何仅更新对象的公共成员值?我的意思是,我可以创建这种方法:

private void adjustAValuesAccordingToB(B b){

 a.val1 = b.val1;
 a.val2 = b.val2;
 a.val3 = b.val3;
 ...

}

但是,有没有更干净的方法来处理这种情况?

a.setVal3(x); //change val3 value

serv.put(a);

共有1个答案

汲睿
2023-03-14

我只需要为a创建第二个构造函数,它以B为例。

class A {
    int a;
    int b;
    int c;
    public A(B b) {
        this(b.a, b.b, b.c);
    }
    public A(int a, int b, int c) {
        this.a = a;
        this.b = b;
        this.c = c;
    }
}

然后

B b = server.get();
A a = new A(b);

如果您不能修改A,那么您只需要将B的元素直接传递给现有的构造函数。

 类似资料:
  • 我正在装一个应用程序,它工作得很好。但当我使用 在OuterClass中,并通过

  • 我有一个BizSpark帐户,但我正在努力弄清楚作为我的免费Azure包的一部分,我实际上有权得到什么。套餐详情列于此处: http://www.windowsazure.com/en-us/offers/details?locale=en-us 我需要运行: 一个虚拟机(运行Linux)为网站供电 一个托管服务,为客户端软件(Windows Phone和Windows 8)提供数据库访问 一个托

  • 我一直在试图理解java中嵌套类的机制。 考虑以下代码: } 我知道内部类是编译器的一种现象,虚拟机不知道它们。内部类被翻译成带有$分隔外部和内部类名的常规类文件。 为了更详细地理解这种机制,我尝试使用javap-p命令反汇编在java版本1.8中编译的类文件。 我得到了以下结果:OuterClass: 内部类: 在这里我们可以看到编译器通过构造函数将外部类的引用传递给内部类,以便它可以评估外部类

  • 访问级别修饰符如何改变内部私有类中成员的行为?我有这个密码 属性是私有的:我可以从Main访问它,但不能从Main外部访问它(因为Inner是私有的) 属性是public的:我仍然可以从Main访问它,但不能从Main外部访问它(因为Inner是private的) 我看不出有什么不同

  • 问题内容: 我有一个类似于http://drive.google.com的链接,并且我想在该链接之外匹配“ google”。 我有: 但这仅在整个文本为“ google”时才匹配(不区分大小写,因此也匹配Google或GooGlE等)。如何匹配另一个字符串中的“ google”? 问题答案: 关键是您使用的ElasticSearch正则表达式需要 完整的字符串匹配 : Lucene的模式总是锚定的

  • 问题内容: 我观察到外部类可以访问内部类的私有实例变量。这怎么可能?这是演示相同代码的示例代码: 为什么允许这种行为? 问题答案: 内部类只是一种将真正属于原始外部类的功能完全分开的方法。当你有两个要求时,可以使用它们: 如果是在单独的类中实现的,那么外部类中的某些功能将最为清晰。 即使在单独的类中,该功能也与外部类的工作方式紧密相关。 鉴于这些要求,内部类可以完全访问其外部类。由于它们基本上是外