小编jav*_*top的帖子

GUI:如何确定是否支持某些Unicode字符?

我注意到Metal L&F不支持Unicode中的某些箭头字符,而Nimbus和GTK L&F确实支持它们.

不支持的字符仅显示为: ...

我可以吗

  1. 或者查找(手动),L&F支持哪些Unicode字符,
  2. 或者在运行时找到它?

编辑:或者,如果它只取决于L&F的默认字体,我的问题或许应该是:
"我如何找出,哪种Java字体支持哪些Unicode字符?"

java unicode fonts swing look-and-feel

14
推荐指数
1
解决办法
2439
查看次数

javax.lang.model:如何获取字段的类型?

java.lang.reflect,人们会这样做:

Field someField = ...;
Class<?> fieldType = someField.getType();
Run Code Online (Sandbox Code Playgroud)

但是,我该怎么做用javax.lang.modelVariableElement(这可能会或可能不会代表一个字段)?相应的返回值将是(我猜)TypeElement.

VariableElement someField = ...;
TypeElement fieldType = someField.???;
Run Code Online (Sandbox Code Playgroud)

那么,在javax.lang.model,如何获得TypeElement字段的类型(或),由VariableElement?表示?

顺便说一下,没有一个适合javax.lang.model的Stackoverflow标签;)

java reflection types mirror annotation-processing

13
推荐指数
1
解决办法
3481
查看次数

Java注释处理:我怎么知道一轮是最后一轮?

扩展时AbstractProcessor,有可能覆盖init(...),但没有"相反"的方法,在处理完所有轮次后调用.

这是一个问题:当你必须将每一轮收集的信息附加到同一个文件时,你就无法关闭文件,因为你永远不会知道最后一轮的时间.因此,文件永远不会关闭并保持为空.

使用关闭钩子也不起作用,永远不会调用钩子.

有任何想法吗?

java annotations annotation-processing shutdown-hook

12
推荐指数
1
解决办法
2179
查看次数

Java:@SuppressWarnings(...)参数的完整列表(在Netbeans中)?

Netbeans提供了很多自定义的"提示",就像警告一样,只是大多数都无法被抑制(只是全局禁用IDE).

但现在我查看使用的代码

@SuppressWarnings("element-type-mismatch")
Run Code Online (Sandbox Code Playgroud)

抑制被称为"可疑方法调用"的提示/警告(例如remove(...)对于具有"错误"类型的集合).

好吧,我永远不会想到用一个SuppressWarnings叫做"元素类型不匹配" 的参数来抑制名为"可疑方法调用"的提示,但显然,它有效.

那么,这些参数是否存在"魔力列表"?

例如,我如何抑制提示/警告"收集字段的返回"?

注意:对于此类似问题,未列出"元素类型不匹配".

java netbeans compiler-warnings suppress-warnings

12
推荐指数
1
解决办法
7126
查看次数

Java泛型:为什么someObject.getClass()不返回Class <?延伸T>?

我希望从编译时间以及运行时方面来看.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> …

java generics types class type-safety

12
推荐指数
2
解决办法
8221
查看次数

Java:如何动态覆盖类的方法(类最终不在类路径中)?

如何动态+有条件地调用类的方法?
(类最终不在类路径中)

让我们说,我需要这个类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: :
任何人都可以请澄清其中 …

java reflection openjdk classpath nimbus

10
推荐指数
1
解决办法
1万
查看次数

JDK7:与类型变量相关的新功能?

我记得已经阅读过关于JDK7的一个新功能(现在也受Netbeans编辑器的支持,但仅限于当前的主干版本).

没有类型变量的情况下instanceof SomeClass<?>编写时,这个微小的特征不再产生警告.

  • 它叫这个功能怎么样?

  • 有人知道任何参考,在哪里描述?

  • 最重要的是:JDK7中是否存在与类型变量相关的其他变化?

java generics java-7

10
推荐指数
1
解决办法
725
查看次数

Android:在共享之前获取图像的文件大小(Intent.ACTION_SEND)

基于这篇博文成功编写了一个应用程序,但更简单,它使用POST请求通过HTTP流式传输图像.

我无法弄清楚(在搜索网页并在Android SDK文档中搜索之后),在分享之前如何获得图像的大小?

我只能打开我在exampkle和其他任何地方看到的输入流:

ContentResolver cr = getContentResolver();
InputStream is = cr.openInputStream(uri);
Run Code Online (Sandbox Code Playgroud)

给定的博客文章示例使用getBytesFromFile(is),因此可以获得那里的大小,但这不是一个解决方案.一些图像是巨大的,而Android应用程序在堆空间有限.我希望我的应用程序适用于所有可想象的图像尺寸(通过Wifi共享时不是问题).

因此,对我来说唯一的选择是将输入流"转发"到某个HTTP输出流,我这样做,哪个有效.但是这种方法在发送之前不会给我图像大小.

android share android-intent

9
推荐指数
3
解决办法
5688
查看次数

Java集合:当"size"超过"int"时会发生什么?

我知道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)

java memory collections integer overflow

8
推荐指数
2
解决办法
2874
查看次数

JDK7:钻石推理语法混乱

尝试在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)

为什么钻石语法的第二次使用不起作用?

第一次使用有什么大不同?

java type-inference diamond-operator java-7

8
推荐指数
1
解决办法
2240
查看次数