gpt4 book ai didi

java - 返回一个对象而无需事后强制转换

转载 作者:行者123 更新时间:2023-12-01 12:07:57 27 4
gpt4 key购买 nike

我有一个方法,可以与实现相同公共(public)接口(interface)的不同类一起使用。该接口(interface)是通用的,实现它的类可以包含任何类型的对象作为实例变量。我的方法使用的所有类都包含不同类型的对象。我需要我的方法来返回给定类包含的对象。由于包含的对象可以是任何类型,我被迫将返回值转换为“Object”,然后在使用该值时将其向下转换回来。有没有更好的解决方法?

public class Foo {

// this method is the problem since it can't keep the type getData returns
public static Object method(I i) {
return i.getData();
}

public static void main(String[] args) {
I a = new A();
I b = new B();
Integer s1 = (Integer)method(a); // this should work without the cast
Integer s2 = method(b); // this shouldn't work of course
}


public static interface I<T> {

public T getData();

}

public static class A implements I<Integer> {

public Integer getData() {
return 1;
}

}

public static class B implements I<String> {

public String getData() {
return "data";
}

}

}

最佳答案

public static  <T> T method(I<T> i) {
return i.getData();
}

关于java - 返回一个对象而无需事后强制转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27462840/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com