java.lang.illegalstateexception: no primary or default constructor found for interface java.util.list
时间: 2023-05-31 11:19:54 浏览: 1276
ListView后台更新报错:java.lang.IllegalStateException
4星 · 用户满意度95%
### 回答1:
这个错误是因为在使用Java中的List接口时,没有找到主要或默认的构造函数。List是一个接口,不能直接实例化,需要使用其实现类(如ArrayList、LinkedList等)来创建List对象。在创建List对象时,需要使用实现类的构造函数来初始化List对象。如果没有使用正确的构造函数,就会出现这个错误。
### 回答2:
这个错误的具体含义是没有找到java.util.list这个接口的主构造函数或默认构造函数。在Java编程中,一个类必须要有构造函数才能被实例化。构造函数是一个特殊的方法,用于在创建对象时初始化对象的各个成员变量。
然而,接口没有成员变量,也没有构造函数。它只提供了一些方法的声明。因此,不能直接创建一个接口的实例。通常我们使用实现该接口的类来创建对象。
在这种情况下,错误的原因可能是尝试使用List接口来创建一个对象,而不是使用实现List接口的类来创建对象。例如:
List<Integer> myList = new List<Integer>(); //错误的写法
正确的做法是使用实现List接口的类来创建对象,例如:
List<Integer> myList = new ArrayList<Integer>();
如果您仍然使用了List接口而不是实现它的类来创建对象,您需要更改代码以使用正确的类。否则,这个错误将继续出现并且您的程序将无法工作。
### 回答3:
这个错误通常出现在使用反射机制创建一个接口的实例时。在Java中,接口无法被实例化,因为它们没有具体的实现,只有定义。当使用反射机制创建接口实例时,Java运行时系统会试图查找默认构造函数(即没有参数的公共构造函数),但接口没有默认构造函数,所以会抛出IllegalStateException异常。
解决这个问题的方法是通过实现这个接口来创建一个对象。可以通过使用ArrayList等实现了List接口的具体类来实现List接口,然后创建一个List对象。例如:
```
List<String> myList = new ArrayList<>();
```
这样就不会出现这个错误了,因为ArrayList类有一个默认构造函数。当然,如果在需要用到接口时需要创建自己的类,则需要提供一个public构造函数,以便Java运行时系统可以使用它。
总之,Java.lang.IllegalStateException:no primary or default constructor found for interface java.util.List是因为尝试创建一个接口的实例,而接口无法直接实例化。正确的方法是使用实现了接口的具体类来创建对象,或提供一个public构造函数,以便Java运行时系统可以使用它。
阅读全文