我设置了一个小项目,ByteBufferGuard
在ByteBufferGuard.java
文件中有一个小的最终课程:
final class ByteBufferGuard {
@FunctionalInterface
static interface BufferCleaner {
void freeBuffer(String resourceDescription, ByteBuffer b) throws IOException;
}
}
然后是另一堂课MMapDirectory.java
。好吧,在这个类中,我不能BufferCleaner
简单地通过导入来引用它,因为:
import ByteBufferGuard.BufferCleaner;
返回:
无法解析符号ByteBufferGuard
但这很奇怪,因为只有ByteBufferGuard
标记为红色,它确实看到了接下来的内容,即BufferCleaner
。
这两个类位于相同的gradle默认根包下,即 src/main/java/
在寻找类似的答案时,我已经尝试过“使缓存无效/重新启动”,并且还删除了.idea
文件夹并再次打开了项目。.到目前为止没有成功。
比方说,这不是一个拦截器,因为我可以替代的所有引用BufferCleaner
同ByteBufferGuard.BufferCleaner
,但它仍然困扰着我,所以我想解决这个问题。
您知道可能是什么问题吗?
Java 1.8 u112
intellij 2017.1 EAP
另一个有趣的事实是,使用Kotlin进行的完全相同的导入操作就像是一种魅力。
不要使用default package
(未命名的程序包)-如果将两个文件都移动到一个程序包(子目录)中,它将起作用。
package some.package;
final class ByteBufferGuard {
@FunctionalInterface
static interface BufferCleaner {
void freeBuffer(String resourceDescription, ByteBuffer b) throws IOException;
}
}
和
package some.package;
import some.package.ByteBufferGuard.BufferCleaner;
public class MapDirectory {
private BufferCleaner cleaner;
// ...
}
(经日食测试,但应相同)
无法从中导入类default package
:
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句