我有课可以说
public class Magic implements Serializable{
}
并且此类不继承
public class Amount{
}
有没有办法将Magic
投射到Amount
,我将不会访问任何字段,我只需要魔法“成为”金额?有什么办法吗?
答案 0 :(得分:1)
不,没有。 Amount
的实例与<{1}}的实例无关。
即使两个类看起来相同,也是如此,在你的情况下它们肯定不是。
在这种情况下,您需要编写代码以将Magic
转换为Magic
。也许在Amount
中有一个构造函数,它以Amount
实例作为参数。
或者,如果Magic
仅包含函数,请考虑将其重新命名为Amount
,由interface
实现。
答案 1 :(得分:1)
您无法在Java中的不相关类型之间进行转换。如果您需要从Amount
实例创建Magic
实例,您应该有一个接收这样一个参数的构造函数:
public class Amount {
public Amount(Magic m) {
// Initialize amount's fields...
}
}
答案 2 :(得分:0)
Casting不会自动将对象从一种类型转换为另一种类型。
强制转换是一种禁用编译器类型检查的方法。演员唯一能做的就是告诉编译器:“这是一个对象,我知道这个对象是什么类型的,所以我希望你将它视为这种类型的对象,而不是抱怨”
在运行时仍会进行类型检查,如果此时对象确实不是您所说的类型,那么您将获得ClassCastException
。
强制转换无法自动将Magic
对象转换为Amount
对象。
您需要自己编写代码以使用Amount
对象的数据创建Magic
对象。
答案 3 :(得分:0)
让Amount
成为Magic
的唯一方法就是让您的班级:Amount
扩展is a
班级。
您希望类之间有 List<String> matches = new ArrayList<>();
Pattern p = Pattern.compile("\"highlight\".*?\"name\": \\[\\s*\"(.*?)\"\\s*\\]", Pattern.DOTALL);
Matcher m = p.matcher(json);
while (m.find()) {
matches.add(m.group(1));
}
System.err.println(matches);
链接,这是通过继承完成的。
否则您将收到编译错误。