相关疑难解决方法(0)

通过反射将所有值从一个类中的字段复制到另一个类

我有一个基本上是另一个类的副本的类.

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)

java reflection

73
推荐指数
8
解决办法
12万
查看次数

恶意代码漏洞 - 可能通过合并对可变对象的引用来公开内部表示

我的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

46
推荐指数
3
解决办法
5万
查看次数

用Java复制对象

我有一个需要用Java复制的对象.我需要创建一个副本并在其上运行一些测试而不更改原始对象本身.

我假设我需要使用clone()方法,但这是受保护的.在网上做了一些研究之后,我可以看到这可以用我班上的公共方法覆盖.但我找不到如何做到这一点的解释.怎么可以这样做?

此外,这是实现我需要的最佳方式吗?

java clone copy object

20
推荐指数
4
解决办法
7万
查看次数

为什么java中不允许赋值为'this'?

我从编译器得到的错误是"赋值的左侧必须是变量".我的用例是深度复制,但并不真正相关.

在C++中,可以分配给*this.

问题不在于如何规避任务this.这很简单,但是决定不做this变量的背后有什么理由.

原因是技术性的还是概念性的?

我的猜测到目前为止 - 在随机方法中重建Object的可能性容易出错(概念性),但技术上可行.

编辑请限制"因为Java规范如此说"的变化.我想知道决定原因

java reference this variable-assignment

20
推荐指数
3
解决办法
9805
查看次数

如何克隆android中的对象?

在java/android中复制/克隆对象的最佳方法是什么?

rlBodyDataObj rlbo = bdoTable.get(name);
Run Code Online (Sandbox Code Playgroud)

现在代码从hashTable中分配一个对象,但我需要得到它的一个克隆,这样我就能多次使用它.

java android

19
推荐指数
3
解决办法
3万
查看次数

为什么Object.clone()在Java中是原生的?

clone上方法Object,它创建的对象的精确副本,被声明为:

protected native Object clone() throws CloneNotSupportedException;
Run Code Online (Sandbox Code Playgroud)

为什么native

java clone native object

13
推荐指数
2
解决办法
2573
查看次数

Java中的`*this = rhs`?

我来自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++).

谢谢

c++ java

12
推荐指数
2
解决办法
1100
查看次数

在Java中按值复制对象列表

我有一个类,它的构造函数中包含一个对象列表,List<Object>.每次列表可以由不同类型的元素组成.这是通用的,我不知道他们的类类型是什么.

在让用户更改其值之前,我想保存自己的列表副本.但由于副本是通过引用完成的,因此两个列表(原始和副本)都在更改...

如何按值复制列表?

谢谢,Devora

java collections

7
推荐指数
1
解决办法
4251
查看次数

将对象复制到另一个

有没有通用的方法来实现将现有对象复制到另一个对象?

假设MyObj有一个idname字段.像这样:

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)

这样它们就是不同的实例,但具有相同的属性.

java

6
推荐指数
3
解决办法
2万
查看次数

我如何在java中创建对象的副本,而不是指针

可以说我有一个我创建的对象.我在其中编辑了一些值,因此它与我引用的新对象()不同.让我们调用该对象f1.现在我想叫F2另一个目的是F1而不是一个指针的副本,所以,当我改变F2的值,它不会也随之变化F1.我将如何在java中执行此操作?

java pointers object

6
推荐指数
2
解决办法
2万
查看次数