Skip to content

Commit c67a684

Browse files
author
crazy
committed
90
1 parent f3d9c2e commit c67a684

5 files changed

Lines changed: 71 additions & 5 deletions

File tree

JavaBase/.classpath

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<classpath>
33
<classpathentry kind="src" path="src"/>
44
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
5-
<classpathentry kind="lib" path="D:/Program Files/eclipse/log4j-1.2.17.jar"/>
6-
<classpathentry kind="lib" path="D:/Program Files/eclipse/lombok.jar"/>
5+
<classpathentry kind="lib" path="D:/eclipse/log4j-1.2.17.jar"/>
6+
<classpathentry kind="lib" path="D:/eclipse/lombok.jar"/>
77
<classpathentry kind="output" path="bin"/>
88
</classpath>
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
package com._520it.reflect;
2+
3+
import java.lang.reflect.Constructor;
4+
import java.lang.reflect.Method;
5+
6+
class User {
7+
public User()
8+
{
9+
System.out.println("无参构造器");
10+
}
11+
12+
public User(String name) {
13+
System.out.println("含有name的构造器");
14+
}
15+
16+
private User(String name, int age) {
17+
System.out.println("有参构造器"+name+age);
18+
}
19+
public void doWork(){
20+
System.out.println("doWork方法");
21+
}
22+
}
23+
24+
public class GetConstructorDemo {
25+
public static void main(String[] args) throws Exception {
26+
getOne();
27+
}
28+
29+
public static void getOne() throws Exception {
30+
Class<?> clazz=User.class;//第一种方式
31+
//Class<?> clazz1=Class.forName("com._520it.reflect.User");//第二种方式
32+
//Class<?> clazz2=(new User().getClass());//第三种方式
33+
System.out.println(clazz);
34+
System.out.println("获取多个构造器");
35+
System.out.println("---------------------------------------------");
36+
Constructor[] con=clazz.getDeclaredConstructors();//getDeclaredConstructors表示的类声明的所有构造方法。
37+
for(Constructor c1:con){
38+
System.out.println(c1);
39+
}
40+
System.out.println("---------------------------------------------");
41+
con=clazz.getConstructors();//表示的类或接口声明的所有方法
42+
for(Constructor c2:con){
43+
System.out.println(c2);
44+
}
45+
46+
System.out.println("---------------------------------------------");
47+
System.out.println("获取单个构造器");
48+
Constructor c3=clazz.getConstructor();
49+
Method method=clazz.getMethod("doWork");
50+
System.out.println(c3.newInstance());
51+
52+
System.out.println(c3);
53+
System.out.println("---------------------------------------------");
54+
c3=clazz.getConstructor(String.class);
55+
System.out.println(c3.newInstance("李华"));
56+
System.out.println(c3);
57+
System.out.println("---------------------------------------------");
58+
c3=clazz.getDeclaredConstructor(String.class,int.class);
59+
c3.setAccessible(true);//使用私有化修饰,通过反射必须先设定可见
60+
System.out.println(c3.newInstance("lihua",36));
61+
System.out.println(c3);
62+
System.out.println("---------------------------------------------");
63+
64+
65+
}
66+
}

JavaBase/src/com/xinan/reflect/TestDogReflect.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ public class TestDogReflect {
99
public static void main(String[] args) throws Exception {
1010
// Class clazz=Class.forName("com.xinan.reflect.Dog");//第一种获取类的方式
1111
// Class clazz1=Person.class;//第二种获取类的方式
12-
Class clazz2 = (new Person().getClass());
12+
Class clazz2 = (new Person().getClass());//第三种获取类的方式
1313
// Field fs = clazz2.getDeclaredField("name");
1414
Field[] fs = clazz2.getDeclaredFields();
1515
StringBuffer sb = new StringBuffer();

JavaBase/src/com/xinan/reflect/TestPerson.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public static void main(String[] args) throws Exception {
1616
for (Field field : fs) {
1717
sb.append("\t");// 空格
1818
sb.append(Modifier.toString(field.getModifiers()) + " ");// 获得属性的修饰符,例如public,static等等
19-
sb.append(field.getType().getSimpleName() + " ");// 属性的类型的名字
19+
sb.append(field.getType().getSimpleName() + " ");// 属性的类型的名字
2020
sb.append(field.getName() + ";\n");// 属性的名字+回车
2121
}
2222
sb.append("}");

JavaBase/src/com/xinan/testoop02/UDisk.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.xinan.testoop02;
1+
package com.xinan.testoop02;
22

33
public class UDisk implements UsbInterface{
44
public void service(){

0 commit comments

Comments
 (0)