我有一个可以简化如下的场景:
以下是一些代码示例:
对于抽象字段
/* AbstractField */
public abstract class AbstractField {
//private members
// builder
}
对于货币字段
public class CurrencyField extends AbstractField {
//private members
// builder that is extended from parent class's builder
}
对于FieldDBStore
interface FieldDBStore<T extends AbstractField> {
void createField(T field, String tableName, String columnName);
void updateField(T field);
}
CurrencyFieldDBStore
public class CurrencyFieldDBStore implements FieldDBStore<CurrencyField> {
@Override
public void createField(CurrencyField field, String tableName, String columnName) {
// Some operations
}
@Override
public void updateField(CurrencyField field) {
// Some operations
}
}
现在的问题是:每当客户机试图发送一个要创建/更新的字段时,它都不知道字段的类型。因此,它将把字段作为超类型(AbstractField)发送。这导致了以下在eclipse中可见的错误
public AbstractField createAbstractField(AbstractField field, Long userId) {
//FieldType is an enum that can return appropriate DBStore implementation as per the field type
FieldType type = field.getFieldType();
String tableName = "SomeTableName";
String columnName = "SomeColumnName";
type.getFieldDBStore().createField(field, tableName, columnName);
在上面的代码中,最后一行抛出此错误
FieldDBStore类型中的方法createField(捕获#2-of?扩展AbstractField,String,String)
我尝试实现一个抽象的字段数据库存储,然后扩展它,但它并没有解决问题。任何建议将不胜感激
<code>键入.getFieldDBStore()。createField()尝试调用具有特定类型的方法。例如,<code>CurrencyField</code>,但<code>AbstractField>/code<不是<code>CurrencyField。
这应该是矛盾的。
因此,在这种情况下,您需要使用一个上限。例如
<代码>无效
说明:此方法排除了作为AbstractField
子类型的每个类型,包括AbstractField
本文向大家介绍C#中的自动类型转换和强制类型转换,包括了C#中的自动类型转换和强制类型转换的使用技巧和注意事项,需要的朋友参考一下 前面已经认识了不同的数据类型,你们有没有尝试过让不同的数据类型进行运算呢? 运行结果是:1 我们把一个整型的变量赋值给了一个浮点型的变量,可以正常的输出,如果我们把一个浮点型的变量赋值给一个整型的变量呢? 这样就会报错。 为什么呢?因为我们之前说过,变量就像一个容器,
假设有一个具有属性a的抽象类A和三个非抽象子类B、C和D。B没有附加属性,C包含属性c,D包含属性c和d。 我想为抽象类A的子类StdDeserializer能够根据要反序列化的属性的存在来决定选择哪个子类。 我以前用Codehaus的一些Jackson版本做到了这一点,它使用以下实现运行良好: 这很好,但从FasterXML ObjectMapper迁移到Jackson 2.4后,不允许Obje
强制类型转换 隐式类型转换:隐式类型转换又称为自动类型转换,隐式类型转换可分为三种:算术转换、赋值转换和输出转换。 显式类型转换:显式类型转换又称为强制类型转换,指的是使用强制类型转换运算符,将一个变量或表达式转化成所需的类型,这种类型转换可能会造成数据的精度丢失。 数据有不同的类型,不同类型数据之间进行混合运算时必然涉及到类型的转换问题。 转换的方法有两种: 自动转换(隐式转换):遵循一定的规则
当我点击我的颤振应用程序中的一个按钮时,我出现了一个错误。这里有人有解决方案吗?! 路线 争论 还有地图 完全错误 生成CategoryMalsScreen(脏,依赖项:[[U ModalScopeStatus],状态:[U CategoryMalsScreenState]时引发了以下错误:类型“String”不是类型“Map”的子类型 导致错误的相关小部件是:CategoryMalsScreen
本文向大家介绍关于C++的强制类型转换浅析,包括了关于C++的强制类型转换浅析的使用技巧和注意事项,需要的朋友参考一下 前言 一说起强制类型转换大家都很熟悉,相信很多学习完C++的朋友还在使用C语言的强制类型的方式 (类型)变量. C++其实也具有自己的一套强制类型转换它们分明是:static_cast reinterpret_cast const_cast dynamic_cast四种类型
Go 语言是一种强类型语言,而且没有隐式转换。也就是说运算符左右的变量类型必须一致,若不一致就会报错。为了使用户更加的容易使用,所以 Go 语言提供了各个类型之间强制类型转换的内置方法。 1. 整型和浮点型互相转换 整型和浮点型变量之间的相互转换相对容易,只需使用强制类型转换标志 type(variable)就好了。需要注意的是,当高精度向低精度类型转换的时候,会失真。即浮点型向整型转换的时候会失