在DirectoryWalker类中,我想知道File实例是否实际上是指向目录的符号链接(假设,walker在UNIX系统上行走).鉴于,我已经知道实例是一个目录,以下是确定符号链接的可靠条件吗?
File file;
// ...
if (file.getAbsolutePath().equals(file.getCanonicalPath())) {
// real directory ---> do normal stuff
}
else {
// possible symbolic link ---> do link stuff
}
Run Code Online (Sandbox Code Playgroud) 我想从Java 5升级到Java 6.我们都知道技术优势和好处,但是:
我有一个问题,主要客户拒绝从java 5升级到java 6,因为"风险"和"我们没有/太少的好处"(银行业).
对于客户的非技术性决策者可以回答什么,他将从升级中获得什么好处 - 或者如果他将继续使用Java 5可能会出现哪些问题/后果?
这不是一个"火与忘记"的产品,它通过新的功能/特性进行了扩展 - 开发已经并且将会不断发展 - 开发团队肯定会受益于jdk 6功能/工具.
编辑: Java 5 达到的EOL确实是一个有效点,但它并没有说服客户端,因为他正在使用IBM JRE/JDK 5,这似乎还没有达到它的生命周期.而且,除此之外,客户说:"Java 5运行良好多年,不太可能出现新的,看不见的问题"
看来Java 6支持TLS高达v1.0,有没有办法在Java 6中使用TLS 1.2?
也许Java 6的补丁或特定更新会支持它?
我知道Java 7的运行时功能不适用于Java 6,但由于没有添加新的字节代码,新的字节代码invokedynamic只与非Java语言相关,我想知道转换Java有多难7源代码(新switch语句,菱形运算符)到纯Java 6(即能够开始将源转换为Java 7而不会失去Java 6兼容性).
有什么指针吗?
每隔15-30分钟,Netbeans会显示一个" java.lang.OutOfMemoryError: PermGen space".从我从谷歌那里学到的东西,这似乎与一般的类加载器泄漏或内存泄漏有关.
不幸的是,我发现的所有建议都与应用程序服务器有关,我不知道它们是否适用于Netbeans.(我甚至不确定它是同一个问题)
这是我申请中的问题吗?我怎样才能找到来源?
是不是可以告诉String.split("(")函数它必须只拆分第一个找到的字符串"("?
例:
String test = "A*B(A+B)+A*(A+B)";
test.split("(") should result to ["A*B" ,"A+B)+A*(A+B)"]
test.split(")") should result to ["A*B(A+B" ,"+A*(A+B)"]
Run Code Online (Sandbox Code Playgroud) 在Java 6中,想象一下我有以下方法签名:
public void makeSandwich(Bread slice1, Bread slice2, List<Filling> fillings, boolean mustard)
Run Code Online (Sandbox Code Playgroud)
我想知道,在运行时,传递给slice2或任何其他参数的值,这里重要的一点是我想通过参数名称获取值.
我知道如何用getParameterTypes或获取参数类型列表getGenericParameterTypes.
理想情况下,我想获得一个参数名称列表而不是类型.有办法吗?
由于公共Java 6 SE JRE越来越接近它的EOL(11月12日),我正在考虑将我的项目从Java 6移植到Java 7.如果Apple提供Java 7 JRE,这将不是什么大问题.对于Mac OS X.但由于Apple不愿意这样做,我仍然需要支持只拥有Java 6 JRE的用户.
有没有办法用Java 7 javac编译Java 6兼容的二进制文件(类文件)?当然,我知道在这样做时我不能使用新的Java 7功能.
谢谢你的期待!
我正在为一个项目尝试Java 7并从这种注释处理器(Bindgen和Hibernate JPA modelgen)获得警告:
warning: Supported source version 'RELEASE_6' from annotation processor 'org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor' less than -source '1.7'
Run Code Online (Sandbox Code Playgroud)
这是由@SupportedSourceVersion(SourceVersion.RELEASE_6)注释处理器类上的注释引起的.由于它们是使用Java 6编译的,因此SourceVersion可用的最高值是RELEASE_6.Java 7版本SourceVersion介绍RELEASE_7.
我的问题:注释处理器如何处理前向兼容性?是否必须有单独的jdk6和jdk7二进制版本?我在这里不理解其他什么吗?
我只发现了有关此问题的以下信息:
@Override
public SourceVersion getSupportedSourceVersion() {
return SourceVersion.latest();
}
Run Code Online (Sandbox Code Playgroud)
评论员建议支持最新源版本的Oracle博客
以下代码无法编译.
package varargspkg;
public class Main {
public static void test(int... i) {
for (int t = 0; t < i.length; t++) {
System.out.println(i[t]);
}
System.out.println("int");
}
public static void test(float... f) {
for (int t = 0; t < f.length; t++) {
System.out.println(f[t]);
}
System.out.println("float");
}
public static void main(String[] args) {
test(1, 2); //Compilation error here quoted as follows.
}
}
Run Code Online (Sandbox Code Playgroud)
发出编译时错误.
对于测试的引用是不明确的,varargspkg.Main中的方法test(int ...)和varargspkg中的方法test(float ...)匹配
这似乎是显而易见的,因为在方法调用的参数值test(1, 2);可以提升int以及float
如果任何一个或两个参数后缀为F或f,则编译.
但是,如果我们使用相应的包装器类型表示方法签名中的接收参数,如下所示 …
java ×10
java-6 ×10
java-7 ×3
annotations ×1
java-5 ×1
java-ee ×1
javac ×1
netbeans ×1
netbeans6.5 ×1
overloading ×1
porting ×1
reflection ×1
regex ×1
runtime ×1
ssl ×1
tls1.2 ×1
upgrade ×1