标签: java-5

Java Generics:通用类型仅定义为返回类型

我正在寻找GWT的一些GXT代码,我遇到了泛型的这种使用,我在Java教程中找不到另一个例子.com.extjs.gxt.ui.client.data.BaseModelData如果要查看所有代码,则为类名.以下是重要部分:

private RpcMap map;

public <X> X get(String property) {
  if (allowNestedValues && NestedModelUtil.isNestedProperty(property)) {
    return (X)NestedModelUtil.getNestedValue(this, property);
  }
  return map == null ? null : (X) map.get(property);
}
Run Code Online (Sandbox Code Playgroud)

X在类中或层次结构中的任何地方都没有定义,当我在eclipse中点击"go to declaration"时,它只会进入<X>公共方法签名.

我试着用以下两个例子调用这个方法来看看会发生什么:

public Date getExpiredate() {
    return  get("expiredate");
}

public String getSubject() {
    return  get("subject");
}
Run Code Online (Sandbox Code Playgroud)

他们编译并显示没有错误或警告.我认为至少我必须做一个演员才能让它发挥作用.

这是否意味着Generics允许魔法返回值可以是任何东西,并且会在运行时爆炸?这似乎与泛型应该做的事情相反.任何人都可以向我解释这一点,并可能给我一些链接到一些文档,解释这一点好一点?我已经浏览了Sun关于泛型的23页pdf,并且返回值的每个示例都是在类级别定义的,或者是传入的参数之一.

java generics java-5

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

为非技术决策者(在客户端)升级到Java 6的原因和优势

我想从Java 5升级到Java 6.我们都知道技术优势和好处,但是:

我有一个问题,主要客户拒绝从java 5升级到java 6,因为"风险"和"我们没有/太少的好处"(银行业).

对于客户的非技术性决策者可以回答什么,他将从升级中获得什么好处 - 或者如果他将继续使用Java 5可能会出现哪些问题/后果?

这不是一个"火与忘记"的产品,它通过新的功能/特性进行了扩展 - 开发已经并且将会不断发展 - 开发团队肯定会受益于jdk 6功能/工具.

编辑: Java 5 达到的EOL确实是一个有效点,但它并没有说服客户端,因为他正在使用IBM JRE/JDK 5,这似乎还没有达到它的生命周期.而且,除此之外,客户说:"Java 5运行良好多年,不太可能出现新的,看不见的问题"

java upgrade java-5 java-6

36
推荐指数
6
解决办法
6525
查看次数

在Java 5及更高版本中迭代java.util.Map的所有键/值对的最简单方法是什么?

在Java 5及更高版本中迭代java.util.Map的所有键/值对的最简单方法是什么?

java collections foreach java-5

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

Mockito isA(Class <T> clazz)如何解决类型安全问题?

在我的测试中,我有以下几行:

when(client.runTask(anyString(), anyString(), isA(Iterable.class)).thenReturn(...)
Run Code Online (Sandbox Code Playgroud)

isA(Iterable.class)产生警告,它需要未经检查的转换以符合Iterable<Integer>.这是什么语法?

isA(Iterable<Integer>.class)
isA((Iterable<Integer>)Iterable.class
Run Code Online (Sandbox Code Playgroud)

不工作.

有什么建议?

java junit mockito java-5

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

如何根据条件禁用TestNG测试

目前有一种方法可以根据条件禁用TestNG测试

我知道你当前可以在TestNG中禁用测试:

@Test(enabled=false, group={"blah"})
public void testCurrency(){
...
}
Run Code Online (Sandbox Code Playgroud)

我想根据条件禁用相同的测试,但不知道如何.像这样的东西:

@Test(enabled={isUk() ? false : true), group={"blah"})
public void testCurrency(){
...
}
Run Code Online (Sandbox Code Playgroud)

任何人都知道这是否可行.

java eclipse testng annotations java-5

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

为什么Java 5中不推荐使用java.io.Serializable?

在Java 5之前,没有注释.因此,您无法向类添加元数据.

要将类标记为可序列化,您必须实现Serializable接口(这只是一个标记)并使用更多transient关键字将字段标记为不可序列化(如果需要),例如:

public class MyClass implements Serializable {
   ...
   private transient Bla field;
   ...
}
Run Code Online (Sandbox Code Playgroud)

现在你理论上可以使用注释(这对他们来说是完美的用途)并且具有:

@Serializable
public class MyClass {
   ...
   @Transient
   private Bla field;
   ...
}
Run Code Online (Sandbox Code Playgroud)

但是不推荐使用接口和关键字,并且在Java 5中没有添加注释来替换它们.

保留界面和关键字的决定有哪些考虑因素?

当然,存在与Java 5之前的代码兼容的问题,但在某些时候它将结束(例如,与泛型的新功能相关,JLS指定未来版本的Java编程语言可能会禁止使用原始类型).那么为什么不为序列化注释做准备呢?

有什么想法吗?(虽然我更喜欢具体的参考文献:D 无法找到)

java serialization annotations metadata java-5

22
推荐指数
2
解决办法
5368
查看次数

java.lang.InternalError:name太长而无法表示

我收到此错误:

java.lang.InternalError: name is too long to represent
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
        at weblogic.utils.classloaders.GenericClassLoader.defineClass(GenericClassLoader.java:338)
        at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:291)
        at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:259)
Run Code Online (Sandbox Code Playgroud)

这似乎与某些调试功能有关(实际上删除-Xdebug命令行选项,错误消失).我也在ASF Bugzilla中找到了一些信息.有办法解决这个问题吗?

我能想到的可能的解决方案是更改JVM(使用JRockit应该没有这个问题),但我真的不知道这是否可以解决问题以及是否可以破坏其他问题.

java weblogic java-5

20
推荐指数
1
解决办法
9443
查看次数

你使用Java注释吗?

可能的重复:
Java中使用的注释的方式和位置?
Java bean,注释:它们做什么?他们如何帮助我?

我一遍又一遍地读到Java 5的注释是该语言的"高级功能".直到最近,我没有太多使用注释(除了通常的@Override,&c),但是在许多与Web服务相关的项目上的工作迫使我的手.自从我学习了Java 5之前的Java以来​​,我从来没有真正花时间坐下来学习注释系统.

我的问题 - 你们真的使用注释吗?他们对你有多大帮助,日常生活?有多少StackOverflow-ers必须编写自定义注释?

java annotations java-5

15
推荐指数
1
解决办法
2435
查看次数

Java方法适用于1.5但不适用1.6

我有一个应用程序,它已经在Java 1.5下运行了大约一年.我们刚刚更新了盒子并安装了Java 1.6.

在将应用程序部署到新服务器之后,我们发现应用程序在尝试转换某些XML时会抛出异常.我们无法理解为什么会发生这种情况,直到我们在本地部署并发生同样的情况.将SDK更改为v1.5后问题停止,应用程序运行正常.

这是方法的来源:

import java.io.StringWriter;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Element;
import org.w3c.dom.Node;


   public static String xmlToString(Node node) {
    try {
        Source source = new DOMSource(node);
        StringWriter stringWriter = new StringWriter();
        Result result = new StreamResult(stringWriter);
        TransformerFactory factory = TransformerFactory.newInstance();
        Transformer transformer = factory.newTransformer();
        transformer.transform(source, result);
        return stringWriter.getBuffer().toString();
    } catch (TransformerConfigurationException e) {
        e.printStackTrace();
    } catch (TransformerException e) {
        e.printStackTrace();
    }
    return null;
   }
Run Code Online (Sandbox Code Playgroud)

它正在崩溃"transformer.transform(source,result);" 有异常的行: …

java xml incompatibility java-5 java-6

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

公共static <T> T addAndReturn(T元素,Collection <T>集合)中<T>的用法是什么{

当我遇到这种通用方法时,我感到困惑.

public static <T> T addAndReturn(T element, Collection<T> collection){
    collection.add(element);
    return element;
}
Run Code Online (Sandbox Code Playgroud)

我不明白为什么<T>这个方法需要.

另外,泛型方法和使用泛型语法的方法有什么区别?

generics java-5

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