-
基元数组查看全部
-
宿主的反射查看全部
-
万事万物皆对象。
一个类只是Class的一个实例对象,且一个类只有一个Class的实例对象
查看全部 -
数据类型.class 称为数据类型的类类型 直接输出他的名称为数据类型名称
不包含包名的name getSimpleName
getMethods获取的是所有的Public的函数,包括父类继承而来的
getDeclaredMethod获取的是所有该类自己声明的方法,不论访问权限
getReturnType获取方法的返回值类型的类类型
getParameterTypes获取参数类型 得到的是参数列表的类型的类类型
查看全部 -
类也是对象,万事万物皆是对象,类是Class的对象,
使用反射创建实例对象,newInstance 需要有无参的构造方法
查看全部 -
package lmr; public class ClassUtil{ public static void printClassMessage(Object obj){ Class c = boj.getClass(); System.out.println("类的名称是:"+c.getName()); Method[] ms = c.getMethods(); for(int i=0;i<ms.length;i++){ Class returnType = ms[i].getReturnType(); System.out.println(returnType.getName()+""); System.out.println(ms[i].getName()+"("); Class[] paramTypes = ms[i].getParameterTypes(); for(Class class1:paramTypes){ System.out.println(); } } } }
查看全部 -
package lmr; public class ClassDemo2{ public static void main(String[] args){ Class c1 = int.class; Class c2 = String.class; Class c3 = double.class; Class c4 = Double.class; Class c5 = void.class; System.out.println(c1.getName()); System.out.println(c2.getName()); System.out.println(c2.getSimpleName()); System.out.println(c5.getName()); } }
查看全部 -
class OfficeBetter {public static void main(String[] args) {try{Class c = Class.forName(args[0]); OfficeAble oa = (OfficeAble)c.newInstance(); oa.start(); } } }
查看全部 -
class Excel implements OfficeAble { public void start() { System.out.println("excel..starts.."); } }
查看全部 -
class OfficeBetter { public static void main(String[] args) { try { Class c = Class.forName(args[0]); OfficeAble oa = (OfficeAble)c.newInstance(); oa.start(); } } }
查看全部 -
class Word { public static void start() { System.out.println("word..starts.."); } }
查看全部 -
class Office { public static void main(String[] args) { if("Word".equals(args[0]) { Word w = new Word(); w.start(); } if("Excel".equals(args[0])) { Excel e = new Excel(); e.start(); } } }
查看全部 -
类是对象,类是java.lang.Class类的实例对象
There is a class named Class
查看全部 -
package lmr; public class ClassDemo1{ public static void main(String[] args){ Foo foo1 = new Foo(); Class c1 = Foo.class; Class c2 = foo1.getClass(); System.out.println(c1 == c2); Class c3 = null; try{ C3 = Class.forName("lmr.Foo"); }catch(ClassNotFoundException e){ e.printStackTrace(); } c3 = Class.forName(); } System.out.println(c2 == c3); } class Foo{}
查看全部 -
反射的操作都是编译之后的操作。
如图中带范式和不带范式的list取类类型的结果相同,说明编译之后结合的范式是去泛型化的。
Java中集合的泛型,是防止错误输入的,只在编译阶段有效,绕过编译就无效了。
验证:如图可以通过方法的反射来操作,绕过编译,实现在一个ArrayList <string>中add加入一个数字20
注意:但是现在不能再使用for遍历数。组了,否则会报类型错误。
查看全部
举报
0/150
提交
取消