小编Joa*_*uer的帖子

45
推荐指数
4
解决办法
2万
查看次数

为什么允许通过反射访问Java私有字段?

考虑这个例子:

import java.lang.reflect.Field;

public class Test {

    public static void main(String[] args) {
        C c = new C();
        try {
            Field f = C.class.getDeclaredField("a");
            f.setAccessible(true);
            Integer i = (Integer)f.get(c);
            System.out.println(i);
        } catch (Exception e) {}
    }
}

class C {
    private Integer a =6;
}
Run Code Online (Sandbox Code Playgroud)

允许您通过反射访问类的私有字段似乎不合逻辑.为什么有这样的功能?允许这种访问不是"危险的"吗?

java reflection private-members

43
推荐指数
4
解决办法
8061
查看次数

如何使生成的类包含XML Schema文档中的Javadoc

我目前正在与具有XML Schema工作<xsd:annotation>/ <xsd:documentation>对大多数类型和元素.当我从这个XML Schema生成Java Bean时,那些Beans的Javadoc只包含一些关于类型/元素的允许内容的通用生成信息.

我希望<xsd:documentation>在相关位置看到标记的内容(例如,对于ComplextType,该标记的内容应该显示在生成的类的Javadoc中以表示该complexType).

有没有办法实现这个目标?

编辑:此XML Schema将在带有JAX-WS的WSDL中使用,因此该标记也可能是合适的.

编辑2:我读过<jxb:javadoc>.根据我的理解,我可以在单独的JAXB绑定文件中或直接在XML Schema中指定.这几乎可以解决我的问题.但我宁愿使用现有的<xsd:documentation>标签,因为Javadoc不是文档的主要目标(主要是关于数据结构的信息,而不是关于从它生成的Java Bean),并允许非JAXB工具访问信息.好.提供两者的文档<jxb:javadoc>xsd:documentation>"感觉"错误,因为我没有充分理由重复数据(和工作).

编辑3:多亏了帕斯卡的答案,我意识到,我已经有半个解决方案:<xsd:documentation>complexTypes的写入它的Javadoc的开始!问题仍然是只有complexTypeS用于和simpleTypeS(这也可导致在一个类)和元素仍然Javadoc的更小.

java javadoc jax-ws jaxb xjc

43
推荐指数
3
解决办法
2万
查看次数

类型安全:从Object中取消选中

我尝试将一个对象强制转换为我的Action类,但它会产生一个警告:

Type safety: Unchecked cast from Object to Action<ClientInterface>

Action<ClientInterface> action = null;
try {
 Object o = c.newInstance();
 if (o instanceof Action<?>) {
  action = (Action<ClientInterface>) o;
 } else {
  // TODO 2 Auto-generated catch block
  throw new InstantiationException();
 }
 [...]
Run Code Online (Sandbox Code Playgroud)

感谢您的任何帮助

java casting unchecked type-safety

43
推荐指数
3
解决办法
6万
查看次数

JVM是否可以在不重新启动的情况下从OutOfMemoryError中恢复

  1. 如果有更多对象分配请求进入之前有机会运行GC,JVM是否可以在不重启的情况下从OutOfMemoryError中恢复?

  2. 各个JVM实现在这方面有所不同吗?

我的问题是关于JVM恢复而不是用户程序试图通过捕获错误来恢复.换句话说,如果在应用程序服务器(jboss/websphere/..)中抛出OOME,我是否必须重新启动它?或者,如果进一步的请求似乎没有问题,我可以让它运行.

java jvm out-of-memory

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

我是否需要关闭ByteArrayInputStream?

简短的问题,

我在一些旧代码中看到a ByteArrayInputStream创建如下:

new BufferedReader(new InputStreamReader(new ByteArrayInputStream(somebytes)));
Run Code Online (Sandbox Code Playgroud)

然后BufferedReader用来somebytes逐行读出.
一切正常,但我注意到它BufferedReader永远不会关闭.
这一切都在长时间运行的websphere应用程序中运行,somebytes并不是很糟糕(最多200k),它每周只调用几次而且我们没有遇到任何明显的内存泄漏.所以我希望所有对象都能成功地进行垃圾回收.

我总是(曾经)在一个finally声明中了解到需要关闭输入/输出流.ByteStreams这个规则是例外吗?

亲切的问候Jeroen.

java garbage-collection inputstream

43
推荐指数
2
解决办法
2万
查看次数

使用Java 7新IO获取文件/目录大小

如何在java 7中使用新的NIO获取文件或目录的大小?

nio java-7

43
推荐指数
3
解决办法
2万
查看次数

为什么不能降低Java子类中方法的可见性?

当您在子类中重写方法时降低方法的可见性时,为什么编译器会给出错误消息?

java polymorphism overriding subclassing

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

为什么Java中的许多Collection类扩展了抽象类并实现了接口?

为什么Java中的许多Collection类扩展了Abstract类并实现了接口(也是由给定的抽象类实现的)?

例如,类HashSet扩展AbstractSet并实现Set,但AbstractSet已经实现Set.

java collections

42
推荐指数
4
解决办法
4817
查看次数

为什么Java varargs不支持集合?

在我的Java代码中,我经常使用非常方便的method(Class... args)varargs.据我所知,它们允许您传递任意数量的Class对象或数组Class[].由于我也经常使用Java集合类,因此两者之间缺乏兼容性使我感到沮丧.结果,我最终做了collection.toArray(),但这有一些类型安全问题.

所以现在问题是:为什么Java不允许实例Iterable<T>作为vararg参数,只要泛型类型适合T...vararg 的类型?不是每个人都一直使用列表,集等吗?是否有一种简单,类型安全的方式来提供从集合到vararg的转换?

java collections language-features variadic-functions

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