我有一个基本上是另一个类的副本的类.
public class A {
int a;
String b;
}
public class CopyA {
int a;
String b;
}
Run Code Online (Sandbox Code Playgroud)
我正在做的是在通过webservice调用发送之前将类中的值A放入.现在我想创建一个反射方法,它基本上将所有相同(按名称和类型)的字段从一个类复制到另一个类.CopyACopyAACopyA
我怎样才能做到这一点?
这是我到目前为止所做的,但它并不常用.我认为这里的问题是我试图在我循环的字段上设置一个字段.
private <T extends Object, Y extends Object> void copyFields(T from, Y too) {
Class<? extends Object> fromClass = from.getClass();
Field[] fromFields = fromClass.getDeclaredFields();
Class<? extends Object> tooClass = too.getClass();
Field[] tooFields = tooClass.getDeclaredFields();
if (fromFields != null && tooFields != null) {
for (Field tooF : tooFields) {
logger.debug("toofield name #0 and …Run Code Online (Sandbox Code Playgroud) 我的dto类中有以下代码.
public void setBillDate(Date billDate) {
this.billDate = billDate;
}
Run Code Online (Sandbox Code Playgroud)
而且我在声纳中出现错误,我不知道我在这里做错了什么.
Malicious code vulnerability - May expose internal representation by incorporating reference to mutable object
Run Code Online (Sandbox Code Playgroud)
该类是一个dto,该方法是自动创建的setter方法.我在这做错了什么.如果有人能解释.这将是一个很大的帮助.
我有一个需要用Java复制的对象.我需要创建一个副本并在其上运行一些测试而不更改原始对象本身.
我假设我需要使用clone()方法,但这是受保护的.在网上做了一些研究之后,我可以看到这可以用我班上的公共方法覆盖.但我找不到如何做到这一点的解释.怎么可以这样做?
此外,这是实现我需要的最佳方式吗?
我从编译器得到的错误是"赋值的左侧必须是变量".我的用例是深度复制,但并不真正相关.
在C++中,可以分配给*this.
问题不在于如何规避任务this.这很简单,但是决定不做this变量的背后有什么理由.
原因是技术性的还是概念性的?
我的猜测到目前为止 - 在随机方法中重建Object的可能性容易出错(概念性),但技术上可行.
编辑请限制"因为Java规范如此说"的变化.我想知道决定的原因
在java/android中复制/克隆对象的最佳方法是什么?
rlBodyDataObj rlbo = bdoTable.get(name);
Run Code Online (Sandbox Code Playgroud)
现在代码从hashTable中分配一个对象,但我需要得到它的一个克隆,这样我就能多次使用它.
的clone上方法Object,它创建的对象的精确副本,被声明为:
protected native Object clone() throws CloneNotSupportedException;
Run Code Online (Sandbox Code Playgroud)
为什么native?
我来自C++世界,我找不到以下的Java替代方案(如果有的话):
struct SomeStruct
{
SomeStruct(){}
SomeStruct(const SomeStruct& rhs)
{
*this = rhs;
}
};
Run Code Online (Sandbox Code Playgroud)
我需要这个的原因是我有一个现有对象的缓存,所以我不想创建另一个实例,只是为了'克隆'现有的实例,如下所示:
public class SomeObject
{
private static Hashtable _objects;
SomeObject()
{
SomeObject obj = _objects.get(some_key);
if (obj != null) {
// *this = obj;
// instead of:
// this.something = obj.something;
// this.something1 = obj.something1;
// this.something2 = obj.something2;
// a zillion fields....
}
}
};
Run Code Online (Sandbox Code Playgroud)
编辑:
对不起,我混淆了一些事情(仍然需要学习Java和C++).
谢谢
我有一个类,它的构造函数中包含一个对象列表,List<Object>.每次列表可以由不同类型的元素组成.这是通用的,我不知道他们的类类型是什么.
在让用户更改其值之前,我想保存自己的列表副本.但由于副本是通过引用完成的,因此两个列表(原始和副本)都在更改...
如何按值复制列表?
谢谢,Devora
有没有通用的方法来实现将现有对象复制到另一个对象?
假设MyObj有一个id和name字段.像这样:
MyObj myObj_1 = new MyObj(1, "Name 1");
MyObj myObj_2 = new MyObj(2, "Name 2");
Run Code Online (Sandbox Code Playgroud)
代替
myObj_2.setName(myObj_1.getName()) // etc for each field
Run Code Online (Sandbox Code Playgroud)
做一些如下事情:
myObj_2.copyFrom(myObj_1)
Run Code Online (Sandbox Code Playgroud)
这样它们就是不同的实例,但具有相同的属性.
可以说我有一个我创建的对象.我在其中编辑了一些值,因此它与我引用的新对象()不同.让我们调用该对象f1.现在我想叫F2另一个目的是F1而不是一个指针的副本,所以,当我改变F2的值,它不会也随之变化F1.我将如何在java中执行此操作?