相关疑难解决方法(0)

Java是否保证Object.getClass()== Object.getClass()?

我的确意味着身份平等.

例如,以下内容是否始终打印为真?

System.out.println("foo".getClass() == "fum".getClass());
Run Code Online (Sandbox Code Playgroud)

java identity jvm equality class

39
推荐指数
3
解决办法
5987
查看次数

头脑风暴:奇怪的JPA问题,可能是classpath或jar版本问题?

我看到一个奇怪的错误信息,我正在寻找一些关于问题可能是什么的想法.我对使用JPA有点新意.

我有一个应用程序,我使用Spring的Entity Manager Factory(LocalContainerEntityManagerFactoryBean),EclipseLink作为我的ORM提供程序,连接到MySQL DB并使用Maven构建.我不确定这些是否重要......

当我将此应用程序部署到Glassfish时,应用程序按预期工作.

问题是,我创建了一组独立的单元测试,以便在Glassfish之外运行,但这些测试无法正常工作.我收到以下错误(我已经编辑了一些类名)

com.xyz.abc.services.persistence.entity.MyEntity cannot be cast to com.xyz.abc.services.persistence.entity.MyEntity
Run Code Online (Sandbox Code Playgroud)

该对象不能转换为相同类型的类?怎么可能?

这是一段错误的代码片段

Query q = entityManager.createNamedQuery("MyEntity.findAll");
List entityObjects = q.getResultList();
for (Object entityObject: entityObjects) {
   com.xyz.abc.services.persistence.entity.MyEntity entity = (com.xyz.abc.services.persistence.entity.MyEntity) entityObject;
Run Code Online (Sandbox Code Playgroud)

以前,我有这个代码产生相同的错误:

CriteriaQuery cq = entityManager.getCriteriaBuilder().createQuery();
cq.select(cq.from(com.xyz.abc.services.persistence.entity.MyEntity.class));
List entityObjects = entityManager.createQuery(cq).getResultList();
for (Object entityObject: entityObjects) {
   com.xyz.abc.services.persistence.entity.MyEntity entity = (com.xyz.abc.services.persistence.entity.MyEntity) entityObject;
Run Code Online (Sandbox Code Playgroud)

此代码的问题与我部署到服务器的问题相同.

如果它有帮助,这是最里面的例外

Caused by: java.lang.ClassCastException: com.xyz.abc.services.persistence.entity.MyEntity cannot be cast to com.xyz.abc.services.persistence.entity.MyEntity
    at com.xyz.abc.services.persistence.entity.factory.MyEntityFactory.createBeans(MyEntityFactory.java:47)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:115)
    ... …
Run Code Online (Sandbox Code Playgroud)

java spring jpa classloader eclipselink

5
推荐指数
1
解决办法
3447
查看次数

Java instanceof不匹配Double

我有一个Value班级,其中有一个Object value.我想将值用作String,Integer或Double.

该asDouble方法控制instanceof值对象.如果不是Double或Integer返回0.

一般来说它有效但有时虽然有效Double returns 0;.我不能理由.

当我调试时,我可以看到:

你可以查一下

这是我的Value类

public class Value{
    public Object value;

    public Value(Object value) {
        this.value = value;
    }

    public Double asDouble() {
        if (this.value instanceof Integer || this.value instanceof Double) {
            return Double.parseDouble(String.valueOf(this.value));
        } else {
            return 0.0; 
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

谁能解释我哪里出错了?

java casting

3
推荐指数
1
解决办法
637
查看次数

标签 统计

java ×3

casting ×1

class ×1

classloader ×1

eclipselink ×1

equality ×1

identity ×1

jpa ×1

jvm ×1

spring ×1