为什么我用这个Java代码会出现编译器错误?
1 public List<? extends Foo> getFoos()
2 {
3 List<? extends Foo> foos = new ArrayList<? extends Foo>();
4 foos.add(new SubFoo());
5 return foos;
6 }Run Code Online (Sandbox Code Playgroud)
其中'SubFoo'是实现Foo的具体类,而Foo是一个接口.
我用这段代码得到的错误:
更新:感谢Jeff C,我可以更改第3行来说"new ArrayList <Foo>();".但我仍然遇到第4行的问题.
我有一个简单的bean @Entity Message.java,它有一些正常的属性.该对象的生命周期如下
消息的实例化发生在线程A上,然后它被排入阻塞队列
池中的另一个线程获取该对象并使用它执行一些操作并更改Message的状态,之后,对象再次进入blockingQueue.重复该步骤直到条件使其停止.每次对象获取读/写时都可能来自不同的线程,但保证一次只有一个线程可以读/写.
鉴于这种情况,我是否需要同步getter/setter?也许这些属性会变化?或者我可以不同步而离开?
谢谢,希望我能澄清一下我在这里有什么.
我想将属性文件存储为XML.有没有办法在执行此操作时对键进行排序,以便生成的XML文件按字母顺序排列?
String propFile = "/path/to/file";
Properties props = new Properties();
/*set some properties here*/
try {
FileOutputStream xmlStream = new FileOutputStream(propFile);
/*this comes out unsorted*/
props.storeToXML(xmlStream,"");
} catch (IOException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud) 我不是在询问文件名的一般语法规则.我的意思是陷入困境并陷入困境的陷阱.例如,尝试在Windows上命名文件"COM <n>"?
我有一个非常简单的代码块,用于模拟键盘事件.下面的简单例子应该输入"Cz" - 换档键下降,c键下降,c上升,换档上升.然后z键向下和向上.
看来有时订单会变得混乱.当我创建一个计时器来每秒调用这个例程时,输出应该是CzCzCzCz ....但这是我得到的:
CZcZCZCzczCzczCzczCZCZCzCz
我会再次运行它:
CzCzCzCzCZCzCZCzCZCzCZCzCZCzCzCz
不同.同样错了.
代码:
e1 = CGEventCreateKeyboardEvent(NULL, (CGKeyCode)56, true);
CGEventPost(kCGSessionEventTap, e1);
CFRelease(e1);
e2 = CGEventCreateKeyboardEvent(NULL, (CGKeyCode)8, true);
CGEventPost(kCGSessionEventTap, e2);
CFRelease(e2);
e3 = CGEventCreateKeyboardEvent(NULL, (CGKeyCode)8, false);
CGEventPost(kCGSessionEventTap, e3);
CFRelease(e3);
e4 = CGEventCreateKeyboardEvent(NULL, (CGKeyCode)56, false);
CGEventPost(kCGSessionEventTap, e4);
CFRelease(e4);
e7 = CGEventCreateKeyboardEvent(NULL, (CGKeyCode)6, true);
CGEventPost(kCGSessionEventTap, e7);
CFRelease(e7);
e8 = CGEventCreateKeyboardEvent(NULL, (CGKeyCode)6, false);
CGEventPost(kCGSessionEventTap, e8);
CFRelease(e8);
Run Code Online (Sandbox Code Playgroud)
在如何实现shift键的keydown和keyup时,我是否缺少一些东西?我认为这可能是一个错误 - 我会在哪里举报?
我正在研究一个套接字监听器,它必须在2个端口上侦听2种类型的数据(端口80和端口81).这些数据与对数据执行的操作类型非常相似,只是因为它们到达不同的端口而不同.我继续使用Java的ServerSocket类编写实现,但后来才意识到ServerSocket类的accept()方法是块,我的实现无法承受.所以现在我正在考虑使用Java NIO实现相同的功能,但在完成了一些教程之后,我认为我比我开始时更困惑.如果这里的某个人可以引导我完成整个过程,即使它是伪代码或技术"下一步该做什么",那将是很棒的.这就是我打算实现的目标.
通过调用2个类似的线程来监听,就像永远在2个端口上一样.(非阻塞)来自某个网络位置的远程设备连接,发送数据然后断开连接.
我想如果只知道如何使用NIO设置服务器来监听端口,那么就可以实现localhost上的端口80,其余的都很容易实现.
干杯
我正在运行一个需要弱密码套件黑名单的服务器.
那以下哪一项很弱? http://java.sun.com/javase/6/docs/technotes/guides/security/SunProviders.html#SunJSSEProvider
我有一个Java应用程序,它监视传入XML文件的文件夹.检测到新文件时,我需要测试文件当前未更新并关闭.我的想法是使用File.canWrite()来测试它.这样做有什么问题吗?这是测试文件是否已完全写入的好方法吗?
我投掷的其他想法是:
我只是不确定这些方法中的任何一种都能处理所有场景.
我知道设置并行处理会有开销,Stream如果项目很少或者每个项目的处理速度很快,单个线程中的处理速度会更快.
但是,是否存在类似的阈值trySplit(),将问题分解为较小的块会产生相反的效果?我在想类似于合并排序切换到最小块的插入排序.
如果是这样,阈值是否取决于过程中物品的相对成本trySplit()和消耗tryAdvance()?例如,考虑一个分裂操作,它比推进数组索引要复杂得多 - 分割一个词法排序的多集排列.是否存在允许客户在创建并行流时指定拆分下限的约定,具体取决于其使用者的复杂程度?启发式Spliterator可以用来估计下限本身吗?
或者,或者,让a的下限为Spliterator1 是否总是安全的,让工作窃取算法负责选择是否继续拆分?
无论如何在Java中删除数据(例如,变量值,对象)并确保它无法从内存中恢复?分配null给Java中的变量是否会从内存中删除值?有任何想法吗?适用于其他语言的答案也是可以接受的.
java ×8
concurrency ×2
xml ×2
encryption ×1
file-io ×1
filesystems ×1
fork-join ×1
generics ×1
macos ×1
naming ×1
nonblocking ×1
security ×1
sockets ×1
spliterator ×1
ssl ×1