gpt4 book ai didi

java构造函数无法转换为scala

转载 作者:行者123 更新时间:2023-12-01 14:21:25 25 4
gpt4 key购买 nike

我知道java构造函数转换成Scala代码。但这是我的项目通用类实现。我在这个项目中使用 hibernate 和 spring,我创建了 genericDAO 特征,但无法创建它的实现,或者我无法将此 java 构造函数转换为 scala

这是两个变量

private Class<T> entityClass;

private String entityClassName;

这是 GenericDAOImpl 类代码,这里 GenericDAOImpl 是构造函数

@SuppressWarnings("unchecked")
public GenericDAOImpl() {
Type genericSuperclass;
Class<?> parametrizedClass = getClass();
do {
genericSuperclass = parametrizedClass.getGenericSuperclass();
if (genericSuperclass instanceof Class) {
parametrizedClass = (Class<?>) genericSuperclass;
}
} while (genericSuperclass != null
&& !(genericSuperclass instanceof ParameterizedType));
this.entityClass = (Class<T>) ((ParameterizedType) genericSuperclass)
.getActualTypeArguments()[0];
if (entityClass != null) {
entityClassName = entityClass.getSimpleName();
}
}

来自米兰的感谢

编辑

我试过了

@SuppressWarnings("unchecked")
def this(T,ID){
var genericSuperclass:Type;
var parametrizedClass:Class[?]=getClass
do {
genericSuperclass = parametrizedClass.getGenericSuperclass()
if (genericSuperclass instanceof[Class]) {
parametrizedClass = (Class<?>) genericSuperclass
}
} while (genericSuperclass != null
&& !(genericSuperclass instanceof [ParameterizedType]))
this.entityClass = (Class[T]) ((ParameterizedType) genericSuperclass)
.getActualTypeArguments()[0]
if (entityClass != null) {
entityClassName = entityClass.getSimpleName()
}

}


And this got compilation Error

最佳答案

我发现 Java 到 Scala 转换存在一些问题。具体来说,我将用

替换 Java 的 instanceof
isInstanceOf[SomeClass]

类型转换更改自

(Class[T])

.asInstanceOf[Class[T]]

添加类绑定(bind)更改为_(我认为)

数组索引从方括号更改为圆括号,例如

.getActualTypeArguments[0]

.getActualTypeArguments(0)

将这些更改应用到我得到的原始 Java

class GenericDAOImpl[T] {
var genericSuperclass: Type = null
var parametrizedClass: Class[_] = getClass()
do {
genericSuperclass = parametrizedClass.getGenericSuperclass()
if (genericSuperclass.isInstanceOf[Class])
parametrizedClass = genericSuperclass.asInstanceOf[Class[_]]
} while (genericSuperclass != null
&& !(genericSuperclass.isInstanceOf[ParameterizedType]))
val entityClass = genericSuperclass.asInstanceOf[ParameterizedType]
.getActualTypeArguments()(0).asInstanceOf[Class[T]]
val entityClassName =
if (entityClass != null)
entityClass.getSimpleName()
else
null

但是......这对我来说没有意义,我需要看到更多你原来的类(class)才能让它发挥作用。

关于java构造函数无法转换为scala,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17523235/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com