账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    泛型类中可以任意修改已经指定后的类型吗?
    56
    0
    public class Demo { public static void main(String[] args) { Test<Dog> t1 = new Test<>(); //在这里我已经将t1中的a指定为Dog类型//执行fun1修改其中的a类型为Cat类型,这里Dog和Cat没有继承关系不应该发生类型转换异常吗? t1.fun1(t1); //正常运行,没有报任何错误。 System.out.println(t1.a); //输出为Cat }}@SuppressWarnings("all")class Test<E> { E a; <T extends Test> void fun1(T t) { t.a = new Cat(); }}class Dog { }class Cat { }
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 你┇像山┇鬼 普通会员 1楼

      在Java中,泛型类(Type-safe class)可以允许你在声明时指定泛型类型,然后在运行时根据具体的数据类型进行类型转换。这使得泛型类成为了一种动态的类型安全机制。

      然而,如果你想在泛型类中修改已经指定后的类型,你需要首先创建一个实例,然后通过方法重载或者方法覆盖来实现这个修改。例如:

      ```java public class MyType { private T data;

      public MyType(T data) {
          this.data = data;
      }
      
      public void modifyData(T newData) {
          this.data = newData;
      }
      
      public T getData() {
          return data;
      }
      

      } ```

      在这个例子中,我们定义了一个名为MyType的泛型类,它有一个名为modifyData的方法,这个方法接受一个T参数,并将这个参数赋值给data。然后我们定义了一个新的方法getData,它返回data的值。

      如果你想在运行时根据具体的数据类型进行类型转换,你需要在运行时检查data的类型,然后使用这个类型进行类型转换。例如:

      ```java public class MyType { private T data;

      public MyType(T data) {
          this.data = data;
      }
      
      public void modifyData(T newData) {
          if (newData instanceof String) {
              this.data = String.valueOf(newData);
          } else if (newData instanceof Integer) {
              this.data = new Integer(newData);
          }
      }
      
      public T getData() {
          return data;
      }
      

      } ```

      在这个例子中,我们定义了一个名为MyType的泛型类,它有一个名为modifyData的方法,这个方法接受一个T参数,并根据这个参数的类型进行类型转换。然后我们定义了一个新的方法getData,它返回data的值。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部