本帖最后由 小石姐姐 于 2019-2-21 17:10 编辑
IllegalStateException: stream has already been operated upon or closed 这个异常为stream流会报的异常,为因为看下面的程序当你执行完第一步进行下一步的时候第一步的stream流已经不能在下面再去进行遍历,因为stream流是向前进行的,即使你注释掉第四部,他也会报这个错误,你无法再去用这个流,但是你可以用链式编程,因为链式编程也是在一直向下进行.不会影响的. package demos;
import java.util.ArrayList;
import java.util.stream.Stream;
public class Demos01 {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("hah1");
list.add("你好");
list.add("大家好");
Stream<String> stream = list.stream(); 1
Stream<String> skip = stream.skip(1); 2
stream.forEach(s -> System.out.println(s)); 3
skip.forEach(s -> System.out.println(s)); 4
}
}
IllegalArgumentException: object is not an instance of declaring class 抛出的异常表明向方法传递了一个不合法或不正确的参数。 package it.cast.reflect;
import it.cast.domain.Person;
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.util.Properties;
public class ReflectDemos3 {
public static void main(String[] args) throws Exception {
Properties pro = new Properties(); 1
ClassLoader cls = ReflectDemos3.class.getClassLoader(); 2
InputStream is = cls.getResourceAsStream("pro.properties"); 3
pro.load(is); 4
String classname = pro.getProperty("className"); 5
String methodName = pro.getProperty("methodName"); 6
Class cls1 = Class.forName(classname); 7
Constructor con = cls1.getConstructor(); 8
Object o = con.newInstance(); 9
Method method = cls1.getMethod(methodName); 10
method.invoke(o); 11
}
}
此时这个异常主要是第十一行不对,因为开始错误的时候我没有创建对象,没有第九行,直接传递了一个con,所以报错,第十一行报错是我传递的是错误的,不是对象,所以他找不到要调用的方法. 第二行也一定要注意 .class之前是此类名,而不是Person类名,一定要注意, .getClassLoader(); 其实我理解的就是类加载器就好像是把路径给了is 所以他知道该去哪里照这个pro.properties这个配置文件, 还要注意第七行,这段程序,因为你classname这个的只是字符串,所以不能直接用getclass直接转换类对象方法.
Exception in thread "main" java.sql.SQLException: No suitable driver found for jdbc:mysql//127.0.0.1:3306/he at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:703) at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:229) at cn.itcast.jdbc.jdbcDemos.main(jdbcDemos.java:10)
这个异常为数据库的异常,我的这个异常就是你要注意,书写连接位置时,一定要注意冒号的问题,mysql后面要加上冒号.
1. DriverManager:驱动管理对象 * 功能: 1. 注册驱动:告诉程序该使用哪一个数据库驱动jar static void registerDriver(Driver driver) :注册与给定的驱动程序 DriverManager 。 写代码使用: Class.forName("com.mysql.jdbc.Driver"); 通过查看源码发现:在com.mysql.jdbc.Driver类中存在静态代码块 static { try { java.sql.DriverManager.registerDriver(new Driver()); } catch (SQLException E) { throw new RuntimeException("Can't register driver!"); } }
注意:mysql5之后的驱动jar包可以省略注册驱动的步骤。
会注册两次这里有个静态代码块,DriverManager.registerDriver(new com.mysql.jdbc.Driver()); 创建匿名对象的时候会执行一次,然后调用方法会注册一次
|