小编J.z*_*hou的帖子

为什么正则表达式((x,y)|(x,z))是不确定的?

为什么正则表达式((x,y)|(x,z))是不确定的,正如"核心Java"这本书所说的那样?作者给出了他的观点:

当解析器看到x时,它不知道要采用哪两个替代方案.这个表达式可以以确定的形式重写为(x,(y | z))

任何人都可以给我一个解释吗?

java regex

8
推荐指数
1
解决办法
320
查看次数

为什么我不能在java中抛出或捕获泛型类的实例?

我知道我不能在Java中抛出或捕获泛型类的实例,例如,下面的代码编译错误:

public static <T extends Throwable> void test(Class<T> t){
    try{
        //do work
    }
    catch (T e){// ERROR--can't catch type variable
    Logger.global.info(...)
    }
}
Run Code Online (Sandbox Code Playgroud)

有人能解释Java禁止抛出或捕获泛型类实例的确切原因吗?

java generics

5
推荐指数
1
解决办法
585
查看次数

Java中的对象类型混淆

public class Test {
    public static void main(String[] args){
        B b=new B();
        A a1=new A();
        A a2=b;               
        a1=b;
        a1.printDescription(); //which prints I'm B
        a2.printDescription(); //which also prints I'm B 
    }
}
class A{
    public void printDescription(){
        System.out.println("I'm A");
    }
}

class B extends A{
    public void printDescription(){
        System.out.println("I'm B");
    }
}
Run Code Online (Sandbox Code Playgroud)

在搜索之后,我找到了一个解释混乱的Java多态,它说:"即使x被明确声明为类型A,它也被实例化为B类的对象,所以我将运行doIt()方法的版本,即在B类中定义."但是在我使用类A构造函数实例化对象之后,它仍然打印"我是B",所以任何人都可以为我解释这个吗?

java

1
推荐指数
1
解决办法
412
查看次数

关于C++中指向数据成员的指针的一些混淆

class Foo {
    public:
    int a = 1;
    int b = 2;
};

int main() {
    Foo foo;
    cout << &Foo::a << endl;//output 1
    cout << &Foo::b << endl;//also output 1
}
Run Code Online (Sandbox Code Playgroud)

我们知道指向成员数据的指针应指出与对象起始地址的相对偏移量,但正如示例所示,指向Foo :: a和Foo :: b的指针都得到了a 1.有人能解释这里发生了什么吗?

c++

1
推荐指数
1
解决办法
162
查看次数

标签 统计

java ×3

c++ ×1

generics ×1

regex ×1