[Java] object deep copy into different type
- Dominant language
- Java
- Stars
- 4.5k
- Forks
- 443
- Avg merge
- 5h 59m
- Merged PRs (30d)
- 77
Description
### Feature Request
We've supported object deep copy of object from one instance to another instance, but we still don't support deep copy object from one type into another type.
### Is your feature request related to a problem? Please describe
deep copy object from one type into another type:
```java
class Struct1 {
int f1;
String f2;
public Struct1(int f1, String f2) {
this.f1 = f1;
this.f2 = f2;
}
}
class Struct2 {
int f1;
String f2;
double f3;
}
Struct1 s1 = xxx;
Struct2 struct2 = copyTo(s1, Struct2.class)
```
### Describe the solution you'd like
Extend the current object deep copy mechanism
### Describe alternatives you've considered
Mock by:
```java
public class StructMappingExample {
static class Struct1 {
int f1;
String f2;
public Struct1(int f1, String f2) {
this.f1 = f1;
this.f2 = f2;
}
}
static class Struct2 {
int f1;
String f2;
double f3;
}
static ThreadSafeFury fury1 = Fury.builder()
.withCompatibleMode(CompatibleMode.COMPATIBLE).buildThreadSafeFury();
static ThreadSafeFury fury2 = Fury.builder()
.withCompatibleMode(CompatibleMode.COMPATIBLE).buildThreadSafeFury();
static {
fury1.register(Struct1.class);
fury2.register(Struct2.class);
}
public static void main(String[] args) {
Struct1 struct1 = new Struct1(10, "abc");
Struct2 struct2 = (Struct2) fury2.deserialize(fury1.serialize(struct1));
Assert.assertEquals(struct2.f1, struct1.f1);
Assert.assertEquals(struct2.f2, struct1.f2);
struct1 = (Struct1) fury1.deserialize(fury2.serialize(struct2));
Assert.assertEquals(struct1.f1, struct2.f1);
Assert.assertEquals(struct1.f2, struct2.f2);
}
}
```
This will work, but not that efficient cause it will write/read buffer.
### Additional context
https://github.com/apache/fury/discussions/1973
https://github.com/apache/fury/pull/1974
Contributor guide
Assessment
This issue has not been assessed yet.