注释public class ObjectTool<T> { private T obj; public void setObj(T obj) { this.obj = obj; } public T getObj() { return obj; } } public static void main(String[] args) { ObjectTool<String> obj = new ObjectTool<>(); obj.setObj("Hello World."); System.out.println(obj.getObj());
时间: 2023-12-06 07:43:34 浏览: 25
这段代码定义了一个泛型类 ObjectTool<T>,其中 T 是类型参数。这个类有一个属性 obj,类型为 T,和两个方法 setObj 和 getObj,分别用于设置和获取 obj 的值。
在 main 方法中,创建了一个 ObjectTool<String> 对象 obj,并通过 setObj 方法设置了 obj 的值为 "Hello World."。然后通过 getObj 方法获取 obj 的值并将其打印输出。因为 obj 的类型是 String,所以输出的结果是 "Hello World."。
相关问题
2.请将下面的类StringType改写成一个泛型类GenericsType,类中包含有一泛型类成员变量Key,构造函数传递参数对key进行初始化,另外编写一个方法printKey对该泛型类成员key内容进行输出。请使用下面的类GenericsTest进行测试。 class StringType{ private String key; public void setKey(String key) { this.key = key; } public String getkey() { return this.key; } } public class GenericsTest{ public static void main(String[] args) { GenericsType<String> obj = new GenericsType<>("Hello"); System.out.println(obj.getKey()); ObjectTool< Integer > obj1 = new GenericsType <>(); obj1.setKey(123); obj1.printKey(); ObjectTool< Double > obj2 = new GenericsType <>(); obj2.setKey(123.1); obj2.printKey(); } }
改写后的代码如下:
```
class GenericsType<T>{
private T key;
public GenericsType(T key) {
this.key = key;
}
public void setKey(T key) {
this.key = key;
}
public T getKey() {
return this.key;
}
public void printKey() {
System.out.println(this.key);
}
}
public class GenericsTest{
public static void main(String[] args) {
GenericsType<String> obj1 = new GenericsType<>("Hello");
System.out.println(obj1.getKey());
GenericsType<Integer> obj2 = new GenericsType<>(123);
obj2.printKey();
GenericsType<Double> obj3 = new GenericsType<>(123.1);
obj3.printKey();
}
}
```
在GenericsType类中,我们使用了泛型T来代替了String,同时添加了构造函数和printKey方法来初始化和输出泛型成员变量key。在GenericsTest中,我们分别对String、Integer和Double类型的泛型对象进行了测试,验证了泛型类的使用效果。
class GenMet<T>{ private T t; public T getObjO{ return t; } public void setObj(Tt){ this.t-t;} public <U> void display(U u){ System.out.println("泛型类的类型参数 T:"+t.getClassO-getNameO); System.out.println("泛型方法的类型参数 U:"+u.getClassO-getNameO); public classTest2_2{ public static void main(Stringl ] args){ GenMet<Integer> gen=new GenMet<Integer>O; gen.setObj(new Integer(5)); gen.display("我是文本"); 运行结果为:
编译错误。代码中的 `setObj(Tt)` 应该为 `setObj(T t)`,并且 `display` 方法需要加上一个右括号。修正后的代码如下:
```
class GenMet<T> {
private T t;
public T getObj() {
return t;
}
public void setObj(T t) {
this.t = t;
}
public <U> void display(U u) {
System.out.println("泛型类的类型参数 T:" + t.getClass().getName());
System.out.println("泛型方法的类型参数 U:" + u.getClass().getName());
}
}
public class Test2_2 {
public static void main(String[] args) {
GenMet<Integer> gen = new GenMet<Integer>();
gen.setObj(new Integer(5));
gen.display("我是文本");
}
}
```
运行结果为:
```
泛型类的类型参数 T:java.lang.Integer
泛型方法的类型参数 U:java.lang.String
```