j ava匿名内部类
时间: 2023-07-26 10:10:34 浏览: 119
Java中,匿名内部类是指没有名字的内部类,它通常用于创建一个实现某个接口或继承自某个类的对象。匿名内部类的语法非常简洁,可以在创建对象的时候直接定义类的实现或者继承方式。
下面是一个简单的示例,创建了一个实现了Runnable接口的匿名内部类:
```
Thread t = new Thread(new Runnable() {
public void run() {
// 线程执行的代码
}
});
t.start();
```
在上面的代码中,我们通过匿名内部类实现了Runnable接口,并在创建Thread对象时传入该实现。在实际运行时,线程会执行传入的Runnable对象的run()方法。
需要注意的是,匿名内部类不能有构造方法,因为它没有名字,无法在外部创建对象实例。同时,匿名内部类也不能定义静态成员或静态方法,因为静态成员需要使用类名访问,而匿名内部类没有名字,无法使用类名访问。
相关问题
j ava泛型创建类的对象
要创建一个泛型类的对象,需要在类名后面加上尖括号,尖括号中指定具体的类型。例如,如果有一个泛型类`MyClass<T>`,要创建一个`MyClass`的对象,可以这样写:
```
MyClass<String> obj = new MyClass<String>();
```
这表示创建了一个`MyClass`类型的对象,并指定类型参数为`String`。如果要创建`MyClass`类型的对象,并指定类型参数为`Integer`,可以这样写:
```
MyClass<Integer> obj = new MyClass<Integer>();
```
需要注意的是,在Java7及以后的版本中,可以省略泛型类型参数的右侧的尖括号中的类型参数,例如:
```
MyClass<String> obj = new MyClass<>();
```
这表示创建了一个`MyClass`类型的对象,并指定类型参数为`String`。
j ava枚举类与compareto
枚举类是Java中一种特殊的数据类型,它代表了一组预定义的常量。
而compareTo()是Java中Comparable接口的一个方法,用于比较两个对象的大小关系,返回值为正数则代表前者大于后者,为负数则代表前者小于后者,为零则代表两者相等。
在枚举类中,可以实现Comparable接口并重写compareTo()方法,使得枚举常量之间可以比较大小。例如:
```
public enum Size implements Comparable<Size> {
SMALL, MEDIUM, LARGE;
@Override
public int compareTo(Size otherSize) {
return this.ordinal() - otherSize.ordinal();
}
}
```
上述代码中,定义了一个枚举类Size,并实现了Comparable接口并重写了compareTo()方法。在compareTo()方法中,使用了ordinal()方法获取当前枚举常量的序号,并与另一个枚举常量的序号进行比较,从而实现了枚举常量之间的大小比较。
这样,在使用枚举类时就可以直接使用compareTo()方法进行大小比较,例如:
```
Size s1 = Size.SMALL;
Size s2 = Size.MEDIUM;
if (s1.compareTo(s2) < 0) {
System.out.println("s1 is smaller than s2");
}
```