# Java多线程、反射、泛型和正则表达式学习笔记
## 多线程
多线程是一种并发编程的技术,可以同时执行多个任务。在Java中,可以通过创建Thread类的实例来实现多线程。下面是一个简单的多线程示例:
```java
public class MyThread extends Thread {
@Override
public void run() {
System.out.println("Thread running...");
// 执行任务
}
public static void main(String[] args) {
MyThread thread = new MyThread();
thread.start();
}
}
```
上述代码中,通过继承Thread类并重写run()方法来实现多线程。在main()方法中创建MyThread实例,并调用start()方法来启动线程。
## 反射
反射是一种机制,可以在运行时动态获取和使用类的信息。通过Java反射API,我们可以获取类的构造方法、字段、方法等信息,以及动态调用类的方法。下面是一个简单的反射示例:
```java
public class ReflectExample {
public static void main(String[] args) {
try {
Class<?> clazz = Class.forName("com.example.MyClass");
Constructor<?> constructor = clazz.getConstructor();
Object instance = constructor.newInstance();
Method method = clazz.getMethod("myMethod");
method.invoke(instance);
} catch (ClassNotFoundException | NoSuchMethodException | IllegalAccessException
| InstantiationException | InvocationTargetException e) {
e.printStackTrace();
}
}
}
```
上述代码中,通过Class.forName()方法动态获取MyClass类的Class对象,然后使用反射API获取构造方法并创建类的实例。接下来,通过getMethod()方法获取类的方法并调用invoke()来执行方法。
## 泛型
泛型是一种编程技术,可以在编译时检查类型的安全性,并提供更好的代码重用性。通过泛型,我们可以定义一种通用的类型,在使用时再确定具体的类型。下面是一个简单的泛型示例:
```java
public class GenericExample<T> {
private T value;
public GenericExample(T value) {
this.value = value;
}
public T getValue() {
return value;
}
public static void main(String[] args) {
GenericExample<String> example = new GenericExample<>("Hello");
String value = example.getValue();
System.out.println("Value: " + value);
}
}
```
上述代码中,通过在类定义中添加`<T>`来声明泛型类型。在创建对象时,可以通过<>来指定具体的类型。在main()方法中,我们创建了一个GenericExample<String>对象,并调用getValue()方法获取值。
## 正则表达式
正则表达式是一种强大的字符串匹配模式,可以用于检测字符串中是否包含符合特定模式的字符。Java中提供了java.util.regex包来支持正则表达式。下面是一个简单的正则表达式示例:
```java
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexExample {
public static boolean checkEmailFormat(String email) {
String regex = "[a-zA-Z0-9]+@[a-zA-Z0-9]+\\.[a-zA-Z0-9]+";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(email);
return matcher.matches();
}
public static void main(String[] args) {
String email = "test@example.com";
boolean isValid = checkEmailFormat(email);
System.out.println("Is valid email format: " + isValid);
}
}
```
上述代码中,我们定义了一个checkEmailFormat()方法,使用正则表达式来检查是否满足邮箱地址的格式。通过Pattern类的compile()方法将正则表达式编译成模式对象,然后使用Matcher类的matches()方法进行匹配。
以上是关于多线程、反射、泛型和正则表达式的简单学习笔记和示例源码。通过学习和理解这些概念和技术,可以在Java编程中更加灵活和高效地处理多种情况。希望对您有所帮助!
参考资料: