【问题标题】:How do i restrict some Generic class to only accept Integer ? not even take Double but only int values [duplicate]我如何限制一些 Generic 类只接受 Integer ?甚至不采用 Double 而只采用 int 值 [重复]
【发布时间】:2021-03-23 03:46:31
【问题描述】:
{
    public static void main(String[] args)
    {
        G<Double> a=new G<Double>(10.9);
        
        G<String> b=new G<String>("hello");
        
        G c=new G("hell");
        
        System.out.println(a.getObject()); // print 10.9
        System.out.println(b.getObject());   // print hello
        System.out.println(c.getObject());  // print hell
        
       
    }
}

class G<Integer> {
    Integer obj;
    G(Integer obj)
    {
        this.obj=obj;
    }
    public Integer getObject()
    {
        return this.obj;
    }
}

在上面的代码中,只有当它接受 main 方法中的everytype 时,才将 G 类作为 Integer 类型有什么用?我如何实现那个 G 类只接受整数值,如果我输入 double 值但只接受整数,则不要转换为 Double。

【问题讨论】:

  • 如果你只希望它使用Integer,为什么它需要是通用的?只需使用Integer 作为字段、参数和返回类型的类型。不要声明新的类型参数(尤其不是名为 Integer 的类型参数,将 Integer 名称与 java.lang 重叠)。
  • 如何制作一些只严​​格接受整数的类?
  • 我评论中的第二句和节俭的句子解释了如何做到这一点。
  • 第二和第三***

标签: java generics type-conversion typecasting-operator


【解决方案1】:

像这样。如前所述,不要使用泛型。只需让您的构造函数只接受一个 Integer 类型。如果添加 setter,则仅接受 Integer 类型。

class G {
    Integer obj;
    G(Integer obj)
    {
        this.obj=obj;
    }
    public Integer getObject()
    {
        return this.obj;
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多