通用类在Java 6中编译,但不在Java 7中编译

我在Java 6中有一个正确编译的接口: public interface IMultiMap extends Map<K, Set> { public int valueSize(); public boolean put(K key, V value); public void clear(Object key); public boolean isEmpty(Object key); } 但在Java 7中,此接口无法编译。 我在boolean put(K, V)上得到一个编译错误,它与V put(K, V)具有相同的擦除。 编译器的完整错误: error: name clash: put(K#1,V#1) in IMultiMap and put(K#2,V#2) in Map have the same erasure, yet neither overrides the other public […]

Java Oracleexception – “列表中的最大表达式数为1000”

我将一个字符串列表传递给我的查询(写入SQL查询)以获取所需的数据。 但是我得到了这个例外: ora-01795列表中的最大表达式数为1000 我检查了传递给查询IN参数的列表中有超过1000个条目。

不移动鼠标光标时Java动画会断断续续

我有一个非常简单的动画,一个大字体的文本连续(逐个像素)向左移动。 首先将文本转换为图像,然后启动计时器任务,重复(每10-20毫秒)将图像的x坐标递减1,然后执行重绘()。 该程序在某些系统上显示出奇怪的行为。 在我的电脑上使用nVidia卡,它运行顺畅。 在我的Vaio笔记本电脑上,在BeagleBoneBlack和朋友的Mac上,它会严重破坏。 它似乎暂停一段时间,然后跳到左边大约10个像素,再次暂停,依此类推。 让我感到困惑的是,在这些系统中,如果你不触摸鼠标,动画就会断断续续。 只要您在窗口内移动鼠标光标,无论速度有多慢,或者拖动窗口本身,动画都会非常流畅! 任何人都能解释一下吗? 这是程序: import java.awt.*; import java.awt.image.*; import java.awt.event.*; import javax.swing.*; import java.io.*; import java.util.*; class Textimg extends JComponent { String str; Font font; int x = 0; final int ytext = 136; Image img; public Textimg(String s) { str = s; font = new Font(“Noserif”, Font.PLAIN, 96); […]

通过未经检查的类型转换在Java中创建通用数组

如果我有一个generics类Foo ,我不允许创建一个数组,如下所示: Bar[] bars = new Bar[]; (这将导致错误“无法创建Bar的通用数组”)。 但是,正如dimo414在回答这个问题(Java如何:通用arrays创建)中所建议的那样 ,我可以做到以下几点: Bar[] bars = (Bar[]) new Object[]; (这将“仅”生成警告:“类型安全:从Object []到Bar []”的未选中的强制转换。 在回应dimo414的回答的评论中,有些人声称使用这种结构可能会在某些情况下引起问题而其他人说它很好,因为对数组的唯一引用是bars ,它已经是所需的类型。 我有点困惑,在哪些情况下这是可以的,在哪些情况下,它可以让我遇到麻烦。 例如, newacct和Aaron McDaid的评论似乎直接相互矛盾。 不幸的是,原始问题中的评论流只是以未解答的“为什么这个’不再正确’?”结束,所以我决定为它提出一个新问题: 如果bars只包含Bar类型的条目,那么在使用数组或其条目时是否仍然存在任何运行时问题? 或者是唯一的危险,在运行时我可以在技术上将数组转换为其他东西(如String[] ),然后允许我用除Bar之外的类型的值填充它? 我知道我可以使用Array.newInstance(…) ,但我对上面的类型转换构造特别感兴趣,因为,例如,在GWT中newInstance(…) option不可用。

如何使用Javareflection检查给定的类是实现Iterable

我有一个特定的目标类型(在运行时决定),以及一个可迭代的类,我正在与它进行比较。 我正在尝试编写一个检查类的generics参数的方法,以查看它是否是可以迭代我的目标类型的子类。 例子: Class X = SomeObject.class; matches(X, new ArrayList()) -> true matches(X, new ArrayList()) -> true matches(X, new ArrayList()) -> false matches(X, new ArrayList()) -> true (I think?) matches(X, new Iterable() { … }) -> true matches(X, new ListOfSomeObjects()) -> true (where ListOfSomeObjects extends Iterable)

为什么Java使用堆进行内存分配?

我刚刚在一本java书中读到这句话,说java中的Objects驻留在堆上。 是否使用了堆,因为它是快速存储数据和检索数据的最佳方式? 我只是想知道数据结构是初学者。 我的意思是为什么不堆叠或其他东西?

如何在java中获取字母的数字位置?

如何在java中获取字母的数字位置? 假设通过命令提示我输入了abc然后作为输出我需要得到123如何获得java中字母的数字位置? 提前致谢。

在war存档中读取文本文件

我正在尝试从我的war存档中读取文本文件,并在运行时在facelets页面中显示内容。 我的文件夹结构如下 + war archive> + resources> + email> + file.txt 我尝试使用以下代码读取resources / email / file.txt文件夹中的文件 File file = new File(“/resources/email/file.txt”); BufferedReader reader = null; try { reader = new BufferedReader(new FileReader(file)); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } StringBuffer buffer = new StringBuffer(); if (reader != null) { String […]

Java,在对象列表中搜索?

我有点迷失方向让这个发生得最快。 我有一大堆具有基本变量属性的对象(带有getter / setter),我需要在此列表中进行搜索,以查找列表中与给定参数匹配的对象 我已经找到了如何进行常规列表搜索但我需要,例如,搜索列表中每个对象调用getName()的结果的值,并获取具有与我的输入匹配的结果的对象。 像下面的东西,第三个参数是方法调用的结果,第二个参数是我想要找到的。 int index = Collections.binarySearch(myList, “value”, getName()); 任何建议表示赞赏

MongoDb在其java驱动程序中的$ set等价物

有没有办法可以通过Java驱动程序修改MongoDb中某个键的值。 我尝试了以下内容: someCollection.update(DBObject query, DBObject update); someCollection.findAndModify(DBObject query, DBObject update); 但这两个函数都完全用更新的文档替换查询的文档。 在mongo shell中使用$ set的情况下,只更新特定键的一个值的方法是什么。(除了创建一个全新的文档,其中复制了所有字段并更新了其中一个字段)。