从它的外观 - BeanUtils.copyProperties似乎创建一个对象的克隆.如果是这种情况,那么关于实现Cloneable接口的问题(只有不可变对象是新的,因为可变对象有复制的引用)这是最好的,为什么?
我昨天实现了cloneable,然后意识到我必须为非String/Primative元素提供我自己的修改.然后我被告知BeanUtils.copyProperties我现在正在使用哪个.两种实现似乎都提供了类似的功能.
谢谢
我使用这个约定创建Groovy对象...
Item item1 = new Item( name: "foo", weight: "150")
Run Code Online (Sandbox Code Playgroud)
...是否存在操作属性对象的简写约定?像这样的东西......
item1( name: "hello", weight: "175") //this does not work, btw ;-)
Run Code Online (Sandbox Code Playgroud)
...代替...
item1.name = "hello"
item1.weight = "175"
Run Code Online (Sandbox Code Playgroud) 有没有办法将属性从一个类的实例绑定到另一个类的实例的属性(两者之间的公共字段).请参阅以下示例:
class One {
String foo
String bar
}
class Two {
String foo
String bar
String baz
}
def one = new One(foo:'one-foo', bar:'one-bar')
def two = new Two()
two.properties = one.properties
assert "one-foo" == two.foo
assert "one-bar" == two.bar
assert !two.baz
Run Code Online (Sandbox Code Playgroud)
结果是一个错误:无法设置readonly属性:class的属性:Two
我有一个命令对象,我想转换为域对象.
但是,我想将命令对象转换为的对象可能是两个域类之一(它们都是派生类),我需要在服务中执行它(根据其他数据,我决定哪个应该绑定的对象类型).这是可能的,这是最好的方法吗? bindData()仅存在于控制器中.
我是否只需手动将命令对象参数映射到适当的域对象属性?还是有更快/更好的方式?
给定具有属性和构造函数的对象,我希望将构造函数参数复制到属性中,然后在构造函数中执行一些额外的工作.
import groovy.transform.TupleConstructor
@TupleConstructor
class Thing{
def one
def two
public Thing(one, two){
doSomething()
}
def doSomething(){
println "doing something with one : $one and two: $two"
}
}
println new Thing(1, 2).dump()
Run Code Online (Sandbox Code Playgroud)
如果我在构造函数中不执行任何其他操作,这将成功将args复制到属性,但如果我在构造函数中调用"doSomething()",则不会复制属性.
我正在寻找"Groovy"方法将args复制到属性.
groovy ×3
class ×1
clone ×1
constructor ×1
data-binding ×1
grails ×1
grails-orm ×1
java ×1
object ×1
spring ×1