Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何获取用作方法参数的类的类型?_Java - Fatal编程技术网

Java 如何获取用作方法参数的类的类型?

Java 如何获取用作方法参数的类的类型?,java,Java,我有以下课程: public abstract class A<T extends Event> { void onEvent(T event); } Java是一种编译语言,因此不能动态更改类类型,因此我们必须根据数据定义是否要更改类型的块 您的主要事件课程: public class Event {} A类,它获取类的类型 public abstract class A<T extends Event> { void onEvent(T t){}; }

我有以下课程:

public abstract class A<T extends Event> {
  void onEvent(T event);
}

Java是一种编译语言,因此不能动态更改类类型,因此我们必须根据数据定义是否要更改类型的块

您的主要
事件
课程:

public class Event {}
A
类,它获取类的类型

public abstract class A<T extends Event> {
    void onEvent(T t){};
}
简单实现

Sample sample = new Sample();

if (sample instanceof Sample) {

    A<Sample> a = new A<Sample>() {

        @Override
        public void onEvent(Sample t) {
            System.out.println(t.toString());
        }
    };

    // Simple implementation
    a.onEvent(sample);
}
Sample-Sample=新样本();
if(样本的样本实例){
A=新的A(){
@凌驾
公共无效事件(样本t){
System.out.println(t.toString());
}
};
//简单实现
a、 onEvent(样本);
}

您不能,在java中实例化抽象类是不可能的。您必须创建一个扩展该抽象类的类,并向该方法添加定义。抱歉,我没有具体说明。我编辑了我的帖子。我主要关心的是将类的泛型类型传递到A的泛型类型。
newa()
这仍然是初始化抽象类对不起,不是初始化。创建一个匿名子类。
public class Sample extends Event {}
Sample sample = new Sample();

if (sample instanceof Sample) {

    A<Sample> a = new A<Sample>() {

        @Override
        public void onEvent(Sample t) {
            System.out.println(t.toString());
        }
    };

    // Simple implementation
    a.onEvent(sample);
}