我注意到Metal L&F不支持Unicode中的某些箭头字符,而Nimbus和GTK L&F确实支持它们.
不支持的字符仅显示为: ...
我可以吗
编辑:或者,如果它只取决于L&F的默认字体,我的问题或许应该是:
"我如何找出,哪种Java字体支持哪些Unicode字符?"
在java.lang.reflect,人们会这样做:
Field someField = ...;
Class<?> fieldType = someField.getType();
Run Code Online (Sandbox Code Playgroud)
但是,我该怎么做用javax.lang.model的VariableElement(这可能会或可能不会代表一个字段)?相应的返回值将是(我猜)TypeElement.
VariableElement someField = ...;
TypeElement fieldType = someField.???;
Run Code Online (Sandbox Code Playgroud)
那么,在javax.lang.model,如何获得TypeElement字段的类型(或),由VariableElement?表示?
顺便说一下,没有一个适合javax.lang.model的Stackoverflow标签;)
扩展时AbstractProcessor,有可能覆盖init(...),但没有"相反"的方法,在处理完所有轮次后调用.
这是一个问题:当你必须将每一轮收集的信息附加到同一个文件时,你就无法关闭文件,因为你永远不会知道最后一轮的时间.因此,文件永远不会关闭并保持为空.
使用关闭钩子也不起作用,永远不会调用钩子.
有任何想法吗?
Netbeans提供了很多自定义的"提示",就像警告一样,只是大多数都无法被抑制(只是全局禁用IDE).
但现在我查看使用的代码
@SuppressWarnings("element-type-mismatch")
Run Code Online (Sandbox Code Playgroud)
抑制被称为"可疑方法调用"的提示/警告(例如remove(...)对于具有"错误"类型的集合).
好吧,我永远不会想到用一个SuppressWarnings叫做"元素类型不匹配" 的参数来抑制名为"可疑方法调用"的提示,但显然,它有效.
那么,这些参数是否存在"魔力列表"?
例如,我如何抑制提示/警告"收集字段的返回"?
注意:对于此类似问题,未列出"元素类型不匹配".
我希望从编译时间以及运行时方面来看.getClass(),提供正确类型的返回值不是问题.
但我一定是错的.
public class _GetClassGenerics2 {
static class MyClass {
}
public static void main(String[] args) {
MyClass myInstance = new MyClass();
// here it works
Class<? extends MyClass> type = myInstance.getClass();
myMethod(myInstance);
}
public static <T extends MyClass> void myMethod(T instance) {
Class<? extends T> type = instance.getClass();
// java.lang.RuntimeException: Uncompilable source code - incompatible types
// required: java.lang.Class<? extends T>
// found: java.lang.Class<capture#1 of ? extends _GetClassGenerics2.MyClass>
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:它不工作Class<T>,并Class<? super T> …
如何动态+有条件地调用类的方法?
(类最终不在类路径中)
让我们说,我需要这个类NimbusLookAndFeel,但在某些系统上它是不可用的(即OpenJDK-6).
所以我必须能够:
public static void setNimbusUI(final IMethod<UIDefaults> method)
throws UnsupportedLookAndFeelException {
// NimbusLookAndFeel may be now available
UIManager.setLookAndFeel(new NimbusLookAndFeel() {
@Override
public UIDefaults getDefaults() {
UIDefaults ret = super.getDefaults();
method.perform(ret);
return ret;
}
});
}
Run Code Online (Sandbox Code Playgroud)
编辑:
现在我按照建议编辑了我的代码,NoClassDefFoundError使用try-catch 拦截.它失败.我不知道,如果是OpenJDK的错.我得到了InvocationTargetException,造成的NoClassDefFoundError.有趣,我无法抓住InvocationTargetException:无论如何它都被扔了.
EDIT2: :
原因发现:我包裹SwingUtilities.invokeAndWait(...)周围的测试方法,那很invokeAndWait调用抛出NoClassDefFoundError时加载雨云失败.
EDIT3: :
任何人都可以请澄清其中 …
我记得已经阅读过关于JDK7的一个新功能(现在也受Netbeans编辑器的支持,但仅限于当前的主干版本).
在没有类型变量的情况下instanceof SomeClass<?>编写时,这个微小的特征不再产生警告.
它叫这个功能怎么样?
有人知道任何参考,在哪里描述?
最重要的是:JDK7中是否存在与类型变量相关的其他变化?
我基于这篇博文成功编写了一个应用程序,但更简单,它使用POST请求通过HTTP流式传输图像.
我无法弄清楚(在搜索网页并在Android SDK文档中搜索之后),在分享之前如何获得图像的大小?
我只能打开我在exampkle和其他任何地方看到的输入流:
ContentResolver cr = getContentResolver();
InputStream is = cr.openInputStream(uri);
Run Code Online (Sandbox Code Playgroud)
给定的博客文章示例使用getBytesFromFile(is),因此可以获得那里的大小,但这不是一个解决方案.一些图像是巨大的,而Android应用程序在堆空间有限.我希望我的应用程序适用于所有可想象的图像尺寸(通过Wifi共享时不是问题).
因此,对我来说唯一的选择是将输入流"转发"到某个HTTP输出流,我这样做,哪个有效.但是这种方法在发送之前不会给我图像大小.
我知道Java集合非常需要内存,并且自己做了一个测试,证明4GB几乎不足以存储数百万的Integers HashSet.
但是,如果我有"足够的"记忆呢?怎么会发生什么Collection.size()?
编辑:已解决:超出整数范围时Collection.size()返回Integer.MAX.
新问题:如何确定集合元素的"真实"数量呢?
注意1:对不起,这可能是一个let-me-google-it-for-you-question,但我真的没有找到任何东西;)
注2:据我了解,一组的每个整数条目是:
reference + cached_hashcode + boxed_integer_object + real_int_value,对吗?
注3:有趣的是,即使使用JDK7和"压缩指针",当JVM使用2GB的实内存时,它只显示1.5GB的内存VisualVM.
对于那些关心的人:
import java.util.*;
import java.lang.management.*;
public final class _BoxedValuesInSetMemoryConsumption {
private final static int MILLION = 1000 * 1000;
public static void main(String... args) {
Set<Integer> set = new HashSet<Integer>();
for (int i = 1;; ++i) {
if ((i % MILLION) == 0) {
int milsOfEntries = (i …Run Code Online (Sandbox Code Playgroud) 尝试在JDK7中编译以下代码:
import java.nio.file.*;
public final class _DiamondSyntaxErrors {
public interface InterfaceA<T> {
}
public abstract static class ClassA<T>
implements InterfaceA<T> {
protected ClassA() {
}
}
public static void main(String... args) {
// no error
InterfaceA<Path> classA = new ClassA<>() {
};
// error: cannot infer type arguments for SimpleFileVisitor<>
FileVisitor<Path> visitor = new SimpleFileVisitor<>() {
};
}
}
Run Code Online (Sandbox Code Playgroud)
为什么钻石语法的第二次使用不起作用?
第一次使用有什么大不同?