草庐IT

重组单克隆二抗

全部标签

java - 在 Java 中克隆子类

我需要在Java中克隆一个子类,但在发生这种情况的代码中,我不知道子类类型,只知道父类(superclass)。执行此操作的最佳设计模式是什么?例子:classFoo{StringmyFoo;publicFoo(){}publicFoo(Fooold){this.myFoo=old.myFoo;}}classBarextendsFoo{StringmyBar;publicBar(){}publicBar(Barold){super(old);//copiesmyFoothis.myBar=old.myBar;}}classCopier{Foofoo;publicFoomakeCopy(

java - 如何克隆同步集合?

想象一个同步集合:Sets=Collections.synchronizedSet(newHashSet())克隆此集合的最佳方法是什么?最好克隆不需要对原始集合进行任何同步,但要求对克隆集合进行迭代不需要对原始集合进行任何同步。 最佳答案 在同步块(synchronizedblock)中使用复制构造函数:synchronized(s){SetnewSet=newHashSet(s);//preferablyusegenerics}如果您还需要同步副本,请再次使用Collections.synchronizedSet(..)。根据P

java - 如何在最短时间内用 Java 克隆输入流

有人能告诉我如何克隆一个输入流,并尽可能少地花费创建时间吗?我需要多次克隆输入流以使用多种方法来处理IS。我已经尝试了三种方法,但由于某种原因,一切都不奏效。方法一:感谢stackoverflow社区,我发现以下链接很有帮助,并将代码片段合并到我的程序中。HowtocloneanInputStream?但是,使用此代码最多可能需要一分钟(对于一个10MB的文件)来创建克隆的输入流,我的程序需要尽可能快。intread=0;byte[]bytes=newbyte[1024*1024*2];ByteArrayOutputStreambos=newByteArrayOutputStream(

java - 如何在 Java 中克隆 URI

有没有比这个可怕的hack更好的方法来获取URI的副本(克隆)?importorg.eclipse.emf.common.util.URI;URIcloned=URI.createURI(originalURI.toString()); 最佳答案 URI是不可变的值类-因此您真的不需要制作副本。但是,如果您真的需要,那么您的“技巧”(实际上并没有那么糟糕)就是实现它的方法。编辑:我刚刚注意到您没有使用java.net.URI...来自EclipseSDKjavadocs,LikeString,URIisanimmutableclas

java - 在 Java 中深度克隆多维数组......?

这个问题在这里已经有了答案:HowdoIdoadeepcopyofa2darrayinJava?(7个答案)关闭7年前。我有两个具有推断大小的多维数组(实际上它们只是二维数组)。我如何深度克隆它们?到目前为止,这是我得到的:publicfoo(Character[][]original){clone=newCharacter[original.length][];for(inti=0;i相等性测试original.equals(clone);吐出一个错误。为什么?:|

java - 为什么克隆阵列这么慢?

这个测试for(;;){int[]a=newint[10];System.gc();longt0=System.currentTimeMillis();for(inti=0;iArrays.copyOf显示~50毫秒,克隆显示~160毫秒。Clone是一种特殊的native拷贝方法,为什么这么慢?我在HotSpot客户端JVM1.7.0_11-b21上运行了测试。请注意,当数组的大小增加时,clone和copyOf之间的区别就消失了。 最佳答案 我在我的系统上运行了您的代码:它们之间几乎没有区别。两者都以大约30毫秒的速度计时。我的

c# - .Net MemberwiseClone 与 Java 克隆

我正在将C#代码转换为Java。有很多不同的地方依赖.NetMemberwiseClone在我正在转换的代码中。好像都是浅拷贝。那么是否可以简单地用Java的clone()替换这些调用??我想确保没有任何会导致难以修复错误的微小差异。 最佳答案 假设Java中的clone()调用只是调用Object.clone()实现,那么我相信他们有相同的行为:创建了同一个类的另一个对象字段被复制(在继承层次结构中向上和向下)所有复制都以浅层方式执行没有执行用户指定的代码(构造函数等) 关于c#-.N

java - 列出 git 远程仓库的分支而不克隆它

我想知道如何在不克隆的情况下使用jgit列出远程Git存储库的所有分支。在浏览jgit的javadoc时,我发现了ListBranchCommand但这似乎只适用于已经打开的Repository对象。但是我无法找到如何在不在本地克隆的情况下通过HTTP创建存储库对象。这可能吗?谢谢 最佳答案 LsRemoteCommand用于列出远程存储库的分支。要获取命令,请使用Git.wrap(repo).lsRemote()或Git.lsRemoteRepository()静态创建的LsRemoteCommand有其局限性。对于某些传输协议(

java - 如何克隆图像?

我有一张图片。我需要精确复制它并将其保存到BufferedImage,但是没有Image.clone()。这个东西应该在一个计算循环中,所以它应该非常快,没有逐像素复制。执行此操作的最佳性能方法是什么? 最佳答案 您可以绘制到缓冲图像,因此制作一个空白的bufferedImage,从中创建图形上下文,然后将原始图像绘制到它。BufferedImagecopyOfImage=newBufferedImage(widthOfImage,heightOfImage,BufferedImage.TYPE_INT_RGB);Graphicsg

java - 为什么 Java 中的类默认情况下不可克隆

在Java中,要使类可克隆,我们需要实现Cloneable接口(interface)。实现这个接口(interface),就是说这个类支持克隆。但是Java语言设计者不将“允许克隆”作为每个类的默认功能的动机是什么?我们已经有了浅拷贝的默认实现。那为什么要这样限制呢? 最佳答案 考虑克隆具有嵌套属性的对象。你想递归到多深?这对内存来说可能很困难,因此开发人员将其留给我们来决定。 关于java-为什么Java中的类默认情况下不可克隆,我们在StackOverflow上找到一个类似的问题: