List可以存储接口类型的数据吗?

2021-03-01 19:44发布

9条回答
迷恋
2楼 · 2021-03-03 16:02

可以存储的,请参考实例代码:

//这里List存放的数据类型是一个接口        private List processors ; private Logger logger = Logger.getLogger(DataProcessHandler.class); @Transactional public ADIContext handle(ADIContext context){ try {                     //这里直接操作这个List for(DataProcessor processor : processors){ if(context.getStatus() == context.STATUS_SUCCESS){ processor.process(context); }else{ break ; } } } catch (Exception e) { context.setStatus(ADIContext.STATUS_FAIL); context.setMsg("数据存储处理失败..."+ExceptionHelper.getExceptionString(e)); logger.error("数据存储处理失败,taskId="+context.getTaskId(),e); } if(context.getStatus() == context.STATUS_FAIL){ throw new RuntimeException(context.getMsg()); }       return context; }

你--l银河系l--我
3楼 · 2021-03-04 10:08

今天看到了一块代码List存放的数据是一个接口类型的!我知道List可以存放Object类型的不知道可以存放Interface类型的!希望大佬给我这个小白上一课这样可以吗?
代码如下:

List DataProcessor 是一个接口

代码中没有对这个list操作就在方法中直接遍历操作了

接口的代码在下面

       //这里List存放的数据类型是一个接口private List processors ;private Logger logger = Logger.getLogger(DataProcessHandler.class);@Transactionalpublic ADIContext handle(ADIContext context){try {//这里直接操作这个Listfor(DataProcessor processor : processors){if(context.getStatus() == context.STATUS_SUCCESS){
processor.process(context);
}else{break ;
}
}
} catch (Exception e) {
context.setStatus(ADIContext.STATUS_FAIL);
context.setMsg("数据存储处理失败..."+ExceptionHelper.getExceptionString(e));
logger.error("数据存储处理失败,taskId="+context.getTaskId(),e);
}if(context.getStatus() == context.STATUS_FAIL){throw new RuntimeException(context.getMsg());
}return context;
}

接口的代码

public interface DataProcessor {void process(ADIContext context);
}


梵梵
4楼 · 2021-03-04 10:14

简述常见的数据结构中元素的存取特点
1、栈:stack,又称堆栈,对元素的存取特点是:先进后出。
 即,存进去的元素,要在它后面元素一次取出后,才能取出该元素。
2、队列:queue,简称队,对元素的存取特点是:先进先出。
 即:存进去的元素要在它前边的元素取出后才能取出。
3、数组:Array,是有序的元素数列,对元素的存取特点是:
     1)、查找元素快;通过索引值直接查找数组中的元素。
     2)、增删元素慢;
        (1)、指定索引位置增加元素,需要创建一个新的数组,将指定元素

            存储在指定的索引位置,再把元素组元素根据索引复制到新数组对应索引的指定位置。
        (2)、删除指定索引值的元素,需要建立一个新数组,将原数组里面的元素放到新数组中,
            需要删除的指定索引值对应的元素,不放在新数组中。

4、链表:linkedList,对元素存取特点:
    1)、多个节点之间通过地址值进行连接。
 
    2)、查找元素慢

    3)、增删元素快

        增加元素:只需要修改连接下一个元素的地址

        删除元素: 只需要修改连接上一个元素的地址

py大白
5楼 · 2021-03-04 16:10

可以存储的,请参考实例代码:

//这里List存放的数据类型是一个接口        private Listprivate Logger logger = Logger.getLogger(DataProcessHandler.class); @Transactional public ADIContext handle(ADIContext context)try {                     //这里直接操作这个List for(DataProcessor processor : processors){ if(context.getStatus() == context.STATUS_SUCCESS){ processor.process(context); }elsebreak ; } } } catch (Exception e) { context.setStatus(ADIContext.STATUS_FAIL); context.setMsg("数据存储处理失败..."+ExceptionHelper.getExceptionString(e)); logger.error("数据存储处理失败,taskId="+context.getTaskId(),e); } if(context.getStatus() == context.STATUS_FAIL){ throw newRuntimeException(context.getMsg()); }       return context; }


请叫我雷锋叔叔啊
6楼 · 2021-03-04 19:32

你可以查一下J2SE的API文档.

在ArrayList类里的add(Object o)方法里,需要传入的参数为Object类型.

而get(int index)方法的返回类型也为Object类型!

所以,从ArrayList里取出值时要强制转换类型!!

比如:
ArrayList list = new ArrayList();
list.add("a"); //向list内添加一个字符串!!
String str = (String) list.get(0); //从list内将这个字符串取出来并赋给字符串变量a; 因为get(0);返回的是Object类型的"a",而接收它的变量str的数据类型为String,所以要将list.get(0)强制转换为字符串;

如果用Object类型去接受的话就不需要类型转换了!!

Object obj = list.get(0);

我的网名不再改
7楼 · 2021-03-05 23:00

代码如下:

List DataProcessor 是一个接口

代码中没有对这个list操作就在方法中直接遍历操作了

接口的代码在下面

       //这里List存放的数据类型是一个接口
        private List processors ; 
 private Logger logger = Logger.getLogger(DataProcessHandler.class); @Transactional
 public ADIContext handle(ADIContext context){  try {                     //这里直接操作这个List 
   for(DataProcessor processor : processors){    if(context.getStatus() == context.STATUS_SUCCESS){
     processor.process(context);
    }else{     break ;
    }  
   }
  } catch (Exception e) {
   context.setStatus(ADIContext.STATUS_FAIL);
   context.setMsg("数据存储处理失败..."+ExceptionHelper.getExceptionString(e));
   logger.error("数据存储处理失败,taskId="+context.getTaskId(),e);
  }   if(context.getStatus() == context.STATUS_FAIL){    throw new RuntimeException(context.getMsg());
   }         
   return context;
 
 }

接口的代码

public interface DataProcessor { void process(ADIContext context);
}


喵喵咪
8楼 · 2021-03-12 11:08

在ArrayList类里的add(Object o)方法里,需要传入的参数为Object类型.

而get(int index)方法的返回类型也为Object类型!

所以,从ArrayList里取出值时要强制转换类型!!

比如:
ArrayList list = new ArrayList();
list.add("a"); //向list内添加一个字符串!!
String str = (String) list.get(0); //从list内将这个字符串取出来并赋给字符串变量a; 因为get(0);返回的是Object类型的"a",而接收它的变量str的数据类型为String,所以要将list.get(0)强制转换为字符串;

如果用Object类型去接受的话就不需要类型转换了!!

Object obj = list.get(0); 

梦到内河_
9楼 · 2021-03-12 17:06

是可以存储的哦

相关问题推荐

  • 回答 156

    对于每一位才开始接触JAVA的新手来说,先不要管算法和数据结构,大多数简单的程序不需要用到算法和数据结构,所以当你真正需要时再去学习。编程一段时间以后,你就会知道在哪些地方用到他们。这时知道算法的名字并了解它们的功能,然后动手去实践。当我们在去...

  • 回答 93

    2个都很好就业,更关键的是要学得到东西

  • 回答 12
    已采纳

    获取Map集合中所有的key可以通过map集合的keySet()方法获取例如:    Map map = new HashMap();    map.put(xx,xx); //存放数据    //.... 省略    Set set = map.keySet();    //可以通过迭代器进行测试    Iterator iter = set.iter...

  • 回答 56
    已采纳

    不同年龄,不同掌握程度,学历,找工作城市,面试能力这是一个多方面影响的结果,如果是平均值的话,全国平均薪资14k左右

  • 回答 38

    具体学多久,根据自己的学习力,自律性、解决问题能力来决定若系统性学习,跟着讲师的节奏走,大概半年左右,有专业的讲师把课程进行规划,尽心系统学习,有问题,讲师会帮忙解决,学习的效率很高,避免了自学中出现各种问题解决不了,而耽误很多时间,可能会...

  • 回答 23
    已采纳

    (1)idea启动时会有两个快捷方式,安装完后默认生成在桌面的是32位的idea的快捷方式,如果我们使用这个快捷方式运行大项目,一般都会很卡。解决方法是找到idea的安装目录,然后进入bin文件夹,找到名称为idea64的应用程序,右键他生成桌面快捷方式。以后每次...

  • BIO与NIO、AIO的区别2020-05-19 15:59
    回答 4
    已采纳

    IO的方式通常分为几种,同步阻塞的BIO、同步非阻塞的NIO、异步非阻塞的AIO。一、BIO     在JDK1.4出来之前,我们建立网络连接的时候采用BIO模式,需要先在服务端启动一个ServerSocket,然后在客户端启动Socket来对服务端进行通信,默认情况下服务端需要...

  • Java方法的命名规则2021-04-06 19:07
    回答 31

    ava是一种区分字母的大小写的语言,所以我们在定义变量名的时候应该注意区分大小写的使用和一些规范,接下来我们简单的来讲讲Java语言中包、类、变量等的命名规范。(一)Package(包)的命名Package的名字应该都是由一个小写单词组成,例如com、xuetang9、compan...

  • 回答 2

    public class Point {    private int x;    private int y;    public int getX() {        return x;    }    public void setX(int x) {        this.x = x;    }    public int getY() {        return y;    } ...

  • 回答 6

    经典版单例模式public class Singleton {        private static Singleton uniqueInstance;//利用一个静态常量来记录singleton类的唯一实例。     private Singleton() {     }     public static  Singleton getInstance()...

  • 回答 3

    哈希表的长度一般是定长的,在存储数据之前我们应该知道我们存储的数据规模是多大,应该尽可能地避免频繁地让哈希表扩容。但是如果设计的太大,那么就会浪费空间,因为我们跟不用不到那么大的空间来存储我们当前的数据规模;如果设计的太小,那么就会很容易发...

  • 回答 14

    1. DOM(Document Object Model)        DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准。DOM是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找特定信息。分析该结构通常需要加载整个文档和构造层次结构,然后才...

  • 回答 19

    1)作用不同: throw用于程序员自行产生并抛出异常; throws用于声明在该方法内抛出了异常2) 使用的位置不同: throw位于方法体内部,可以作为单独语句使用; throws必须跟在方法参数列表的后面,不能单独使用。3)内容不同: throw抛出一个异常对象,且只能是...

  • 回答 11

    基本执行过程如下:1)程序首先执行可能发生异常的try语句块。2)如果try语句没有出现异常则执行完后跳至finally语句块执行;3)如果try语句出现异常,则中断执行并根据发生的异常类型跳至相应的catch语句块执行处理。4)catch语句块可以有多个,分别捕获不同类型...

  • 回答 20

    100-199 用于指定客户端应相应的某些动作。 200-299 用于表示请求成功。 300-399 用于已经移动的文件并且常被包含在定位头信息中指定新的地址信息。 400-499 用于指出客户端的错误。 400 语义有误,当前请求无法被服务器理解。 401 当前请求需要用户验证...

  • 回答 16

    异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误,只要程序设计得没有问题通常就不会发生。受检异常跟程序运行的上下文环境有关,即使程序设计无误,仍然可能因使用的问题而引发。Java编译...

没有解决我的问题,去提问