我在一些博客中读到单例妨碍测试,因为它导致高耦合,而模拟不能代替它,所以解决方案是实现一个接口并在参数中传递它.我没有博客链接,一旦找到它就会附上它.但由于static getInstance()方法不可能.
那么在Singleton Pattern中实现接口有什么优势吗?
public interface SingletonInterface{
//some methods
}
public class Singleton1 implements SingletonInterface{
//Usual singleton methods
}
Run Code Online (Sandbox Code Playgroud) 我试图了解Java原语和包装器是如何工作的.让我们考虑以下示例.
Integer sum = 0;
for(int i = 0; i < 10000; ++i) {
sum += i;
}
Run Code Online (Sandbox Code Playgroud)
由于Integer是不可变的并且是非原始的,因此该语句sum += i将被编译为如下
sum = new Integer(sum.intValue() + i).
Run Code Online (Sandbox Code Playgroud)
这将创建大约10000个Integer对象(每次调用new Integer)以及sum.intValue()将Integer拆箱到int 的成本.
我对吗?
什么时候被认为是两个不同的对象Sets.difference.当它们有不同的哈希码或者object.equals返回false时.
假设我有一个XML:
<root>
<node>
<order-id>4</order-id>
.....
</node>
<node>
<order-id>1</order-id>
....
</node>
</root>
Run Code Online (Sandbox Code Playgroud)
当我解组这个xml时,我希望List<Node>我得到的是按order-id值排序.
有没有办法使用JAXB直接获取排序列表?
我正在使用classloader加载一个类,它返回我Class<?>,现在我想将类传递给另一个方法或函数Class<? extends SomeClass>.
现在,当我尝试施放时:
Class<?> clazzFromClassLoader = Class.forName(nameOfClass);
Class<? extends Someclass> clazz = (Class<? extends SomeClass>)clazzFromClassLoader;
//second line gives unchecked cast warning
Run Code Online (Sandbox Code Playgroud)
我可以通过使用确保没有类强制转换异常
SomeClass.isAssignableFrom(clazzFromClassLoader);
Run Code Online (Sandbox Code Playgroud)
但有没有办法摆脱未经检查的演员表?
Android必须管理线程或可以使用这样的代码:
public class GameThread implements Runnable {
public void run() {
while (!finished) {
//game work
try {
Thread.sleep(fps);
} catch (InterruptedException e) {
// Interruptions here are no big deal.
}
}
}
}
Run Code Online (Sandbox Code Playgroud) 从最近发布的一个问题中,我遇到了ArrayList#trimToSize(),它将支持数组的大小减小到当前的集合大小.
引用javadoc
将此ArrayList实例的容量调整为列表的当前大小.应用程序可以使用此操作来最小化ArrayList实例的存储.
Javadoc说应用程序可以用来减少后备阵列的内存占用.如果我没有错,这种方法对于小尺寸不会有用,因为一些参考的成本不会那么大.
但是由于arraylist int newCapacity = (oldCapacity * 3)/2 + 1;在1.6和int newCapacity = oldCapacity + (oldCapacity >> 1);1.7中使用的算法,当添加新元素if oldcapacity大时,它将创建具有上述算法的新后备数组,并且如果在动态扩展之后仅添加一个元素,则可以分配更多不需要的空间.
我的理由是正确的方法背后还是有其他一些应用程序?
我有一个情况:
我有一个.eap文件,我有一个工具,即StarUML.我需要将.eap文件内容导入StarUML.
基本上,我需要知道如何将其转换.eap为某种格式以导入到StarUML中.(StarUML采用.mfg并.xmi作为导入)
提前致谢.
我正在尝试使用apache poi使用下面的代码在excel文件中创建一个namged范围.
private static void createNamedRangesForGeneratedValues(final XSSFWorkbook workBook, final String name, final String cellAreaRange) {
final Name cellRangeName = workBook.createName();
cellRangeName.setNameName(name);
final String reference = name + cellAreaRange; // "!A1:C5"; // area reference
cellRangeName.setRefersToFormula(reference);
Run Code Online (Sandbox Code Playgroud)
但是在这一步: cellRangeName.setRefersToFormula(reference);抛出以下异常.
Exception in thread "main" java.lang.NoSuchMethodError: org.apache.poi.ss.formula.FormulaParser.parse(Ljava/lang/String;Lorg/apache/poi/ss/formula/FormulaParsingWorkbook;II)[Lorg/apache/poi/hssf/record/formula/Ptg;
at org.apache.poi.xssf.usermodel.XSSFName.setRefersToFormula(XSSFName.java:195)
at test.java.ExcelSheetDropDownDataHandler.createNamedRangesForGeneratedValues(ExcelSheetDropDownDataHandler.java:186)
at test.java.ExcelSheetDropDownDataHandler.generateCountryData(ExcelSheetDropDownDataHandler.java:93)
at test.java.ExcelSheetDropDownDataHandler.generateData(ExcelSheetDropDownDataHandler.java:64)
at test.java.ExcelSheetDropDownDataHandler.createDataTab(ExcelSheetDropDownDataHandler.java:50)
at test.java.ExcelSheetDropDownDataHandler.main(ExcelSheetDropDownDataHandler.java:205)
Run Code Online (Sandbox Code Playgroud)
有人可以建议,这可能是什么原因?
我正在尝试从字节流编写类加载器,但出现此错误。我已经阅读了文档,但我很困惑,因为这不应该发生。这是我要加载的内容:
class LoadedClass {
public void out(String msg) {
System.out.println(msg);
}
}
Run Code Online (Sandbox Code Playgroud)
它存储在一个字节数组中
这是我的类加载器代码:
package byteclassloader;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
class PrintClass extends ClassLoader {
private String LoadedClass = "cafebabe00000033001e0a0005001309001400150a001600170700180700190100063c696e69743e010003282956010004436f646501000f4c696e654e756d6265725461626c650100124c6f63616c5661726961626c655461626c650100047468697301000d4c4c6f61646564436c6173733b0100036f7574010015284c6a6176612f6c616e672f537472696e673b29560100036d73670100124c6a6176612f6c616e672f537472696e673b01000a536f7572636546696c650100104c6f61646564436c6173732e6a6176610c0006000707001a0c000d001b07001c0c001d000e01000b4c6f61646564436c6173730100106a6176612f6c616e672f4f626a6563740100106a6176612f6c616e672f53797374656d0100154c6a6176612f696f2f5072696e7453747265616d3b0100136a6176612f696f2f5072696e7453747265616d0100077072696e746c6e002000040005000000000002000000060007000100080000002f00010001000000052ab70001b100000002000900000006000100000001000a0000000c000100000005000b000c00000001000d000e00010008000000400002000200000008b200022bb60003b10000000200090000000a00020000000300070004000a00000016000200000008000b000c000000000008000f0010000100010011000000020012";
private String name = "LoadedClass";
public Class findClass() {
byte[] ba = hexStringToByteArray(LoadedClass);
return defineClass(name, ba, 0, ba.length);
}
private static byte[] hexStringToByteArray(String s) {
int len = s.length();
byte data[] = new byte[len / 2];
for( int i = 0; i < len; i+= 2 ) {
data[i / …Run Code Online (Sandbox Code Playgroud) java ×9
android ×1
apache-poi ×1
arraylist ×1
classloader ×1
collections ×1
converter ×1
guava ×1
heap-memory ×1
interface ×1
jaxb ×1
reflection ×1
singleton ×1
staruml ×1
uml ×1
xmi ×1