我无法按照以下代码初始化列表:
List<String> supplierNames = new List<String>();
supplierNames.add("sup1");
supplierNames.add("sup2");
supplierNames.add("sup3");
System.out.println(supplierNames.get(1));
我遇到以下错误:
无法实例化类型 List<String>
我该如何实例化List<String>
?
如果你检查API,List
则会注意到它说:
Interface List<E>
作为一种interface
手段,它无法实例化(new List()
不可能)。
如果你检查该链接,则会发现一些class
实现的List
:
所有已知的实施类:
AbstractList,AbstractSequentialList,ArrayList,AttributeList,CopyOnWriteArrayList,LinkedList,RoleList,RoleUnresolvedList,Stack,Vector
那些可以实例化。使用它们的链接来了解有关它们的更多信息,即IE:知道哪个更适合你的需求。
三种最常用的可能是:
List<String> supplierNames1 = new ArrayList<String>();
List<String> supplierNames2 = new LinkedList<String>();
List<String> supplierNames3 = new Vector<String>();
奖励:
你还可以使用,以更简单的方式使用值实例化它Arrays class,如下所示:
List<String> supplierNames = Arrays.asList("sup1", "sup2", "sup3");
System.out.println(supplierNames.get(1));
但请注意,你不允许向该列表添加更多元素fixed-size
。
我无法初始化列表,如以下代码所示: 我面临以下错误: 无法实例化类型 如何实例化?
返回类型是List,我为返回声明List,我如何在new之后实际声明它?
问题内容: 我正在初始化这样的数组: NetBeans在此行指出一个错误: 我该如何解决这个问题? 问题答案: 上面的信息不正确(语法错误)。这意味着你正在分配一个仅可容纳元素的数组。 如果要初始化数组,请尝试使用: 注意两个声明之间的区别。将新数组分配给声明的变量时,new必须使用。 即使你纠正了语法,访问仍然是不正确的(你只能访问,因为Java中的数组索引是基于0的)。访问]将抛出。
问题内容: 错误 码 问题答案: 您需要初始化 ,如错误消息所示,您仅对其进行了声明。 您需要初始化数组,以便可以 在 开始设置索引 之前 为元素分配正确的内存存储。 __ 如果 仅 声明数组(如您所做的那样),则不会为元素分配内存,而只会分配给的引用句柄,并且尝试在任何索引处初始化变量时都会引发错误。 另外,您也可以在花括号内初始化数组,这样, 相当于
问题内容: 我在创建ThreadLocal并使用new ThreadLocal对其进行初始化时遇到问题。问题是,从概念上讲,我真的只是想要一个持久列表,该列表可以延续线程的寿命,但是我不知道是否有一种方法可以在Java中初始化每个线程的内容。 例如,我想要的是这样的: 这样就可以为每个线程初始化它。我知道我可以这样做: 但我真的不想在每次使用时都进行检查。我能在这里做得更好吗? 问题答案: 您只需
问题内容: 我必须在Java中以字节数组形式存储一些常量值(UUID),并且我想知道初始化这些静态数组的最佳方法是什么。这就是我目前的做法,但我觉得必须有更好的方法。 有什么我可以使用的,虽然效率可能较低,但看起来会更干净?例如: 问题答案: 使用将十六进制字符串转换为的函数,您可以执行 我建议您在使用Java将十六进制转储的字符串表示形式转换为字节数组中使用 DaveL定义的功能吗? 我将其插入