可以实现接口并扩展实现相同接口的类会导致任何问题吗?(混淆除外)
例如:
interface IDo
public abstract class DoIt implements IDo
public class IllDo extends DoIt implements IDo
Run Code Online (Sandbox Code Playgroud)
(请忽略它似乎错了)
我终于完成了将我的应用程序的一部分移动到 osgi 包中并在我的主机应用程序中使用这些包。这真的很好用!
目前,我正在使用 bndtools 清理我的 eclipse 工作区并消除警告。
我无法摆脱的一个警告是:
Eclipse: The .classpath contains an unknown container: org.eclipse.jdt.USER_LIBRARY/lombok
Run Code Online (Sandbox Code Playgroud)
我在我的一些包中使用 lombok。我只是将它添加到项目属性 > java 构建路径 > 库选项卡中。很好用,因为 lombok 是一个用于 eclipse 编译时的库。但这里的问题是我确实收到了上述警告。
我在本地 bndtools 存储库(存储库视图)中添加了一些外部 jar(带有捆绑信息),然后可以将这些 jar 添加到 bndtools 构建路径中,例如 gson。
但是 lombok 似乎没有任何 osgi bundle 信息,因此将其添加到本地存储库会给我一个错误“Jar 没有符号名称”。
当然我可以编辑 lombok.jar 并添加包信息。但我想知道是否有更清洁的方法来做到这一点?
我正在为现有客户端创建服务器.此客户端使用套接字和DataInputStream从服务器读取输入.它使用以下命令检查服务器消息的结束:
byte c = in.readByte();
if( c == 0) { //the end.
Run Code Online (Sandbox Code Playgroud)
在服务器上,我使用serversocket和DataOutputStream向客户端发送消息:
out.write(bytes[])
Run Code Online (Sandbox Code Playgroud)
如何发送0字节,以便客户端知道它是消息的结束?
如何仅使用当前时间每秒执行代码?(没有额外的变量,它没有完全每一秒,我很满意800到1200毫秒之间的变化)
我试过了:
//code repeated every 30-100ms
if ((System.currentTimeMillis() % 1000) == 0) { //execute code
Run Code Online (Sandbox Code Playgroud)
但这不起作用,导致currentTimeMillis可以精确除以1000的可能性不是很高.
关于这个问题有什么好主意吗?
[编辑]请注意我的"无额外变量"评论.让我解释一下:我需要把这段代码放在一个我只有一个长值的地方,表示自1970年以来的unix时间(currentTimeMillis的值).我记不起任何东西,也无法保存下次执行代码时可以访问的额外变量.这是一个特例.