Java-如何在泛型类中调用我的类T的方法
我的类Java-如何在泛型类中调用我的类T的方法,java,generics,methods,Java,Generics,Methods,我的类ListFromFile有问题,它扩展了ArrayList。 在该类中,我想创建一个方法,通过其id属性查找元素并返回它 T可以是来自学生、教师等类的对象。所有这些类都有一个测试id的equals方法 我的问题是我不能使用equals方法来测试ListFromFile中的id 这是我的密码: public class ListFromFile<T> extends ArrayList<T> implements Serializable { public T
ListFromFile
有问题,它扩展了ArrayList
。
在该类中,我想创建一个方法,通过其id
属性查找元素并返回它
T
可以是来自学生、教师等类的对象。所有这些类都有一个测试id的equals方法
我的问题是我不能使用equals方法来测试ListFromFile
中的id
这是我的密码:
public class ListFromFile<T> extends ArrayList<T> implements Serializable {
public T getElement(int id) {
for ( T o : this ) {
if ( o.equals((int)id) ) {
return o;
}
}
return null;
}
}
公共类ListFromFile扩展ArrayList实现可序列化{
公共T getElement(int-id){
对于(TO:这个){
if(o.equals((int)id)){
返回o;
}
}
返回null;
}
}
即使我在equals方法中指定了一个id,该id是int,getElement()
也找不到该元素
经过一些搜索,似乎我必须通过学生、教师等扩展T,但如何扩展多个类
谢谢您以下是示例应用程序,演示如何解决此问题:
import java.io.Serializable;
import java.util.ArrayList;
public class test2 {
// define basic interface for all objects
interface ObjectWithID {
public int getId();
}
public static class Teacher implements ObjectWithID {
private final int id;
public Teacher(final int id) {
this.id = id;
}
@Override
public int getId() {
return this.id;
}
}
public static class Student implements ObjectWithID {
private final int id;
public Student(final int id) {
this.id = id;
}
@Override
public int getId() {
return this.id;
}
}
// note T extends syntax
public static class ListFromFile<T extends ObjectWithID> extends ArrayList<T> implements Serializable {
public T getElement(final int id) {
for (final T o : this)
if (o.getId() == id)
return o;
return null;
}
}
public static void main(final String[] args) {
final ListFromFile list = new ListFromFile<>();
list.add(new Teacher(1));
list.add(new Teacher(2));
list.add(new Teacher(3));
list.add(new Student(4));
list.add(new Student(5));
list.add(new Student(6));
System.out.println(list.getElement(1)); // print teacher
System.out.println(list.getElement(4)); // print student
}
}
import java.io.Serializable;
导入java.util.ArrayList;
公共类test2{
//为所有对象定义基本接口
接口对象WithID{
public int getId();
}
公共静态类教师实现ObjectWithID{
私有最终int id;
公共教师(最终国际id){
this.id=id;
}
@凌驾
公共int getId(){
返回此.id;
}
}
公共静态类Student实现ObjectWithID{
私有最终int id;
公立学生(最终国际id){
this.id=id;
}
@凌驾
公共int getId(){
返回此.id;
}
}
//注意T扩展了语法
公共静态类ListFromFile扩展ArrayList实现可序列化{
公共T getElement(最终整数id){
对于(最终目标:本)
if(o.getId()==id)
返回o;
返回null;
}
}
公共静态void main(最终字符串[]args){
最终ListFromFile列表=新建ListFromFile();
增加(新教师(1));
增加(新教师(2));
增加(新教师(3名));
列表。添加(新学生(4));
列表。添加(新学生(5));
列表。添加(新学生(6));
System.out.println(list.getElement(1));//打印教师
System.out.println(list.getElement(4));//打印学生
}
}
下面是一个示例应用程序,演示如何解决此问题:
import java.io.Serializable;
import java.util.ArrayList;
public class test2 {
// define basic interface for all objects
interface ObjectWithID {
public int getId();
}
public static class Teacher implements ObjectWithID {
private final int id;
public Teacher(final int id) {
this.id = id;
}
@Override
public int getId() {
return this.id;
}
}
public static class Student implements ObjectWithID {
private final int id;
public Student(final int id) {
this.id = id;
}
@Override
public int getId() {
return this.id;
}
}
// note T extends syntax
public static class ListFromFile<T extends ObjectWithID> extends ArrayList<T> implements Serializable {
public T getElement(final int id) {
for (final T o : this)
if (o.getId() == id)
return o;
return null;
}
}
public static void main(final String[] args) {
final ListFromFile list = new ListFromFile<>();
list.add(new Teacher(1));
list.add(new Teacher(2));
list.add(new Teacher(3));
list.add(new Student(4));
list.add(new Student(5));
list.add(new Student(6));
System.out.println(list.getElement(1)); // print teacher
System.out.println(list.getElement(4)); // print student
}
}
import java.io.Serializable;
导入java.util.ArrayList;
公共类test2{
//为所有对象定义基本接口
接口对象WithID{
public int getId();
}
公共静态类教师实现ObjectWithID{
私有最终int id;
公共教师(最终国际id){
this.id=id;
}
@凌驾
公共int getId(){
返回此.id;
}
}
公共静态类Student实现ObjectWithID{
私有最终int id;
公立学生(最终国际id){
this.id=id;
}
@凌驾
公共int getId(){
返回此.id;
}
}
//注意T扩展了语法
公共静态类ListFromFile扩展ArrayList实现可序列化{
公共T getElement(最终整数id){
对于(最终目标:本)
if(o.getId()==id)
返回o;
返回null;
}
}
公共静态void main(最终字符串[]args){
最终ListFromFile列表=新建ListFromFile();
增加(新教师(1));
增加(新教师(2));
增加(新教师(3名));
列表。添加(新学生(4));
列表。添加(新学生(5));
列表。添加(新学生(6));
System.out.println(list.getElement(1));//打印教师
System.out.println(list.getElement(4));//打印学生
}
}
下面是一个示例应用程序,演示如何解决此问题:
import java.io.Serializable;
import java.util.ArrayList;
public class test2 {
// define basic interface for all objects
interface ObjectWithID {
public int getId();
}
public static class Teacher implements ObjectWithID {
private final int id;
public Teacher(final int id) {
this.id = id;
}
@Override
public int getId() {
return this.id;
}
}
public static class Student implements ObjectWithID {
private final int id;
public Student(final int id) {
this.id = id;
}
@Override
public int getId() {
return this.id;
}
}
// note T extends syntax
public static class ListFromFile<T extends ObjectWithID> extends ArrayList<T> implements Serializable {
public T getElement(final int id) {
for (final T o : this)
if (o.getId() == id)
return o;
return null;
}
}
public static void main(final String[] args) {
final ListFromFile list = new ListFromFile<>();
list.add(new Teacher(1));
list.add(new Teacher(2));
list.add(new Teacher(3));
list.add(new Student(4));
list.add(new Student(5));
list.add(new Student(6));
System.out.println(list.getElement(1)); // print teacher
System.out.println(list.getElement(4)); // print student
}
}
import java.io.Serializable;
导入java.util.ArrayList;
公共类test2{
//为所有对象定义基本接口
接口对象WithID{
public int getId();
}
公共静态类教师实现ObjectWithID{
私有最终int id;
公共教师(最终国际id){
this.id=id;
}
@凌驾
公共int getId(){
返回此.id;
}
}
公共静态类Student实现ObjectWithID{
私有最终int id;
公立学生(最终国际id){
this.id=id;
}
@凌驾
公共int getId(){
返回此.id;
}
}
//注意T扩展了语法
公共静态类ListFromFile扩展ArrayList实现可序列化{
公共T getElement(最终整数id){
对于(最终目标:本)
if(o.getId()==id)
返回o;
返回null;
}
}
公共静态void main(最终字符串[]args){
最终ListFromFile列表=新建ListFromFile();
增加(新教师(1));
增加(新教师(2));
增加(新教师(3名));
列表。添加(新学生(4));
列表。添加(新学生(5));
列表。添加(新学生(6));
System.out.println(list.getElement(1));//打印教师
System.out.println(list.getElement(4));//打印学生
}
}
下面是一个示例应用程序,演示如何解决此问题:
import java.io.Serializable;
import java.util.ArrayList;
public class test2 {
// define basic interface for all objects
interface ObjectWithID {
public int getId();
}
public static class Teacher implements ObjectWithID {
private final int id;
public Teacher(final int id) {
this.id = id;
}
@Override
public int getId() {
return this.id;
}
}
public static class Student implements ObjectWithID {
private final int id;
public Student(final int id) {
this.id = id;
}
@Override
public int getId() {
return this.id;
}
}
// note T extends syntax
public static class ListFromFile<T extends ObjectWithID> extends ArrayList<T> implements Serializable {
public T getElement(final int id) {
for (final T o : this)
if (o.getId() == id)
return o;
return null;
}
}
public static void main(final String[] args) {
final ListFromFile list = new ListFromFile<>();
list.add(new Teacher(1));
list.add(new Teacher(2));
list.add(new Teacher(3));
list.add(new Student(4));
list.add(new Student(5));
list.add(new Student(6));
System.out.println(list.getElement(1)); // print teacher
System.out.println(list.getElement(4)); // print student
}
}
import java.io.Serializable;
导入java.util.ArrayList;
公共类test2{
//为所有对象定义基本接口
接口对象WithID{
public int getId();
}
公共静态课堂教师的实现