我有一个Java JUnit 4测试和一个创建通用数组的泛型类.当我创建一个返回此通用数组的方法时,我会在返回它时收到错误消息.如果我将ArrayList(其中T是通过类实例化的Byte)返回到ArrayList,它就可以工作.
为什么数组似乎被实例化和可用(在更复杂的类上测试)但我不能返回对该数组的引用?
错误:
java.lang.ClassCastException: [Lcom.waikato.assignment.Object; cannot be cast to [Ljava.lang.Byte;
at com.waikato.testing.TestJava.test(TestJava.java:20)
Run Code Online (Sandbox Code Playgroud)
类:
public class TestClass<T> {
T[] array;
@SuppressWarnings("unchecked")
public TestClass() {
array = (T[]) new Object[32];
}
public T[] getArray() {
return array;
}
public boolean doThing() {
T[] t = array;
return t == array && t != null;
}
}
Run Code Online (Sandbox Code Playgroud)
测试:
public class TestJava {
@Test
public void test() {
TestClass<Byte> t = new TestClass<Byte>();
Byte[] b = t.getArray(); // Crash caused
assertTrue(t.doThing()); // …Run Code Online (Sandbox Code Playgroud) 我有一份清单.我想排序超级列表取决于子列表大小.列表是动态的.
列表类型是<ArrayList<ArrayList<HashMap>>>Eg.
[ [{key1=value1,key2=value2}],[],[{key1=value1}],[{key1=value1},{key2=value2},{key3=value3}] ]
Run Code Online (Sandbox Code Playgroud)
排序后应显示
[[{key1=value1},{key2=value2},{key3=value3}], [{key1=value1,key2=value2}],[{key1=value1}],[] ]
Run Code Online (Sandbox Code Playgroud)
你能帮忙解决这个问题吗?
提前致谢.
Laxman chowdary
我在java中寻找一个数据结构/算法,它执行以下操作 -
我有一对数字,例如 -
A B
80 0
76 1
64 3
56 4
48 10
Run Code Online (Sandbox Code Playgroud)
我只知道A的值,并且应该通过应用上述规则进行直接查找来找出/得出B的值.
例子 - 1
如果我得到80的值,则输出为0
示例 - 2
如果我得到75的值,则输出为1 [根据规则2]
示例 - 3
如果我得到70的值,则输出为1 [根据规则3]
有什么建议?
基于注释的更新 - 日志(N)查找是可以接受的.我愿意自己实施它,但需要有关如何实现它的建议.A的范围在0到1000之间变化,具有1位精度点.
Java 6(或任何兼容库)标准接口是否存在无参数函数和泛型返回类型.
就像是:
interface Foo<T> {
T call();
}
Run Code Online (Sandbox Code Playgroud) 我有一个字节数组 (byte[]) 形式的 zip 文件,我可以使用以下命令将其写入文件系统:
FileOutputStream fos = new FileOutputStream("C:\\test1.zip");
fos.write(decodedBytes); // decodedBytes is the zip file as a byte array
fos.close();
Run Code Online (Sandbox Code Playgroud)
我不想将其写入文件并读取它以将其作为下载,而是想将字节数组直接作为下载,我尝试了这个,
response.setContentType("application/zip");
response.setHeader("Content-Disposition", "attachment; filename=\"File.zip\"");
ServletOutputStream outStream = response.getOutputStream();
outStream.write(decodedBytes); // decodedBytes is the zip file as a byte array
Run Code Online (Sandbox Code Playgroud)
这不起作用,我得到空文件。如何将字节数组作为下载?
更新: 我添加了finally子句并关闭了ServletOutputStream并且它起作用了。
}catch (Exception e) {
Log.error(this, e);
} finally {
try{
if (outStream != null) {
outStream.close();
}
} catch (IOException e) {
Log.error(this, "Download: Error during closing resources");
}
}
Run Code Online (Sandbox Code Playgroud)
Pankaj 解决方案也有效。
参考How to use TLS 1.2 in Java 6 中提供的解决方案,是否可以将 TSLSocketConnectionFactory 与 Apache HttpClient4.4 一起使用。
问候, j
我知道java Date的设计很差,但是直到今天我都不知道。
我将日期保存到数据库中,当我从数据库中获取日期并与原始日期进行比较时,它告诉我这是不同的!
我写了一个看起来很奇怪但合格的测试!
@Test
public void date_equals() {
Date now = new Date();
Timestamp timestamp = new Timestamp(now.getTime());
assertFalse(timestamp.equals(now));
assertTrue(now.equals(timestamp));
assertTrue(timestamp.compareTo(now) == 0);
assertFalse(now.compareTo(timestamp) == 0);
assertTrue(timestamp.getTime() == now.getTime());
assertTrue(now.getTime() == timestamp.getTime());
}
Run Code Online (Sandbox Code Playgroud)
我注意到java.sql.Timestamp与Date稍有不同,我不在乎。
谁能告诉我如何比较这两种最佳做法?我不想在任何地方都比较日期使用getTime()的情况,是否有任何通用库或其他方法可以做到这一点?
顺便说一句,我正在使用JDK 6
从我的理解科特林应该能够使用JRE 6运行,但这个代码用foreach在地图上失败,因为对一个Java类8引用(java/util/function/BiConsumer)
CompilerTest.kt:
fun main(args: Array<String>) {
val aMap = mapOf("bar" to "bat")
aMap.forEach { k, v -> println("$k -> $v")}
}
Run Code Online (Sandbox Code Playgroud)
编译Kotlin代码:
» kotlinc CompilerTest.kt -jvm-target 1.6 -include-runtime -d compilerTest.jar
Run Code Online (Sandbox Code Playgroud)
在JRE 6上测试已编译的代码:
» docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp openjdk:6-jdk-slim java -jar compilerTest.jar
Exception in thread "main" java.lang.NoClassDefFoundError: java/util/function/BiConsumer
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:643)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
at java.net.URLClassLoader.access$000(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:212)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:323)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:268)
at …Run Code Online (Sandbox Code Playgroud) 只见java.util.spi包,好像有一些班,后缀Name,Data,Control和Service Providers.一些类中new(Since 1.8)和一些存在的类Java 1.6.我找不到太多资源来理解这个spi包的用法.
是否有人在spi包中使用这些类?如果是这样,请告诉我这些类的用途是什么?