Java如何生成接受字符串和整数的泛型类?
我试图熟悉java中的泛型。我仍然不确定如何创建一个简单的类来接受两种类型(String、Integer)。下面是在我的上下文中使用泛型的一个简单尝试Java如何生成接受字符串和整数的泛型类?,java,class,generics,Java,Class,Generics,我试图熟悉java中的泛型。我仍然不确定如何创建一个简单的类来接受两种类型(String、Integer)。下面是在我的上下文中使用泛型的一个简单尝试 public class Container <T> { public T aString() { //Do i know I have a string? } public T anInt() { //How do I know I have an integer? } publi
public class Container <T>
{
public T aString()
{
//Do i know I have a string?
}
public T anInt()
{
//How do I know I have an integer?
}
public Container<T>()
{
//What would the constructor look like?
}
}
公共类容器
{
公共交通
{
//我知道我有一根绳子吗?
}
公共事务
{
//我怎么知道我有一个整数?
}
公共容器()
{
//构造函数是什么样子的?
}
}
我正在引用此页面,但我仍然不确定我在这里做什么。你是不是先弄清楚你在课堂上的“T”是什么类型的
泛型编程真的用于接口和抽象类吗?如果你想使用
String
和Integer
你可能必须使用Object
作为类型。坦率地说,这消除了泛型的大部分好处,您可能应该检查您是否确实有一个合理的模型,以及交织字符串和整数的原因
但是是的,它对接口、自定义类和抽象都很有用。这意味着您可以保证对象的类型是正确的,并且不再需要为每种类型的事情每次都实现它们
Class type = Integer.class
Integer i = verifyType("100",type);
对于整数,类似于字符串
参考如果该类对String和Integer执行的操作明显不同,那么它可能应该是两个类,每个类专门用于其中一种类型
我认为泛型对于以相同方式处理不同类型的引用的情况非常有用
ArrayList
和ArrayList
不需要任何特定于字符串或整数的代码。容器类实际上可以包含字符串、整数或任何类型,您只需正确使用它即可。大概是这样的:
public class Container<T> {
private T element;
public T getElement() {
return element;
}
public void setElement(T element) {
this.element = element;
}
public Container(T someElement) {
this.element = someElement;
}
}
Container<Integer> myIntContainer = new Container<Integer>();
myIntContainer.setElement(234);
公共类容器{
私有T元素;
公共T getElement(){
返回元素;
}
公共无效集合元素(T元素){
this.element=元素;
}
公共容器(T元素){
this.element=someElement;
}
}
您可以这样使用它:
public class Container<T> {
private T element;
public T getElement() {
return element;
}
public void setElement(T element) {
this.element = element;
}
public Container(T someElement) {
this.element = someElement;
}
}
Container<Integer> myIntContainer = new Container<Integer>();
myIntContainer.setElement(234);
Container myIntContainer=newcontainer();
myIntContainer.setElement(234);
或者
Container myStringContainer=newcontainer();
setElement(“测试”);
试图将泛型集合中的对象类型限制为两个类(String和Integer),这两个类没有对象的共同祖先,这似乎有点勉强。感谢您的响应。这不是我想看到/听到的。但是构造器呢?那会是什么样子?您可以将类型为T的参数传递给构造函数。我将编辑此答案以添加一个示例。。。