当前位置: 首页 > 知识库问答 >
问题:

使用默认值初始化动态创建的对象-使用泛型和接口

程举
2023-03-14

我需要初始化“gDetailDS”对象的初始值。我不能创建类而不是接口,接口不允许我设置默认值。

我曾尝试使用map或其他函数来解决该问题,但未能成功。使用map,获取错误“\u this.gDetailDS.map不是函数”。

export interface InterfaceA{
    sysSeq: number;
    code: string;
    isUpdate: boolean;
    version: number;
}

export interface InterfaceB{
    sysSeq: number;
    name: string;
    isReserved: boolean;
    isPublic: boolean;
    version: number;
 }


export class DetailComponent<T> extends CoreComponent {
    gDetailDS: any;
    constructor(){
        this.gDetailDS =  <T> new Object; 
    }

}

我想得到布尔值的默认值。例如,在执行以下行之后,

this.gDetailDS =  <InterfaceB> new Object; 

我应该有一个InterfaceB类型的对象,其默认设置为

this.gDetailDS.isReserved has default value "false";
this.gDetailDS.isPublic  has default value "false";

你的帮助将不胜感激。

共有1个答案

佴保臣
2023-03-14

传输到Javascript后,您的DetailComponent

但是,如果您可以向DetailComponent构造函数添加参数,则问题的解决方案是:

export class DetailComponent<T> extends CoreComponent {
  gDetailDS: T;
  constructor(newInstance: new () => T){
      this.gDetailDS = new newInstance(); 
  }

}

class InterfaceAImpl implements InterfaceA {
  sysSeq: number;
  code: string;
  isUpdate: boolean;
  version: number;
};

var detailComponent: DetailComponent<InterfaceA> = new DetailComponent<InterfaceA>(InterfaceAImpl);

 类似资料:
  • null 必需的 获取java对象(根元素),它完全表示xml和每个由默认值初始化的成员。 当我试图在不显式设置值的情况下marshall xml时,默认值并不能使sence...有什么方法可以在不自定义生成的类的情况下,用默认值填充xml吗? .xsd的示例: 和java类:

  • 问题内容: 当搜寻通过Java语言规范来回答这个问题),我学到的是 在初始化类之前,必须先初始化其直接超类, 但不初始化由该类实现的接口。 同样,在初始化接口之前,不会初始化接口的超级接口。 出于我自己的好奇心,我尝试了一下,并且未如预期的那样对接口进行了初始化。 该程序打印 但是,如果接口声明了一个方法,则确实会发生初始化。考虑给定的接口 然后上面的相同程序将打印 换句话说,接口的字段已初始化(

  • 问题内容: 我有一个对象 我用两种方式初始化它 这是输出 似乎builder没有获得默认值。我在属性中添加了注释,对象现在看起来像这样 这是控制台输出 我怎样才能使他们俩都成为? 问题答案: 我的猜测是,这是不可能的(没有删除代码)。但是,为什么不仅仅实现所需的构造函数呢?Lombok旨在使您的生活更轻松,如果Lombok无法解决某些问题,请按照老式的方式进行操作。 控制台输出:

  • 我有一组常量值,可以作为列表使用。使用这些值,我必须创建一个键值对对象,并且必须将该对象添加到列表中。我想在JAVA 8中使用流API来实现这一点。下面是使用for循环的示例实现 这可以使用流减少操作来实现吗?

  • 考虑以下代码 VS2013编译器发出以下警告: 警告C4351:新行为:数组“B::member”的元素将默认初始化1 这里有记载 使用C 11,并应用“默认初始化”的概念,意味着B. part的元素将不会被初始化。 但我认为,成员{}应该执行值初始化,而不是默认初始化。VS2013编译器是否损坏? 8.5美元/6 默认初始化类型为T的对象意味着:-如果T是(可能是cv限定的)类类型(第9条),则

  • 根据我的参考,基元类型具有默认值,对象为null。我测试了一段代码。 行将是指向变量的错误,表示,而在给定引用中,将作为默认值。但是,使用下面给定的代码,它将实际打印。 第一个代码可能会出什么问题?类变量的行为是否与局部变量不同?