特性一:
看一个构造的简单事例:
(此示例来与网上,这里借用下)
public class Father {
private String name="FATHER";
public Father(){
whoAmI();
tellName(name);
}
public void whoAmI(){
System.out.println("Father says, I am " + name);
}
public void tellName(String name){
System.out.println("Father's name is " + name);
}
}
public class Son extends Father{
private String name="SON";
public Son(){
whoAmI();
tellName(name);
}
public void whoAmI(){
System.out.println("Son says, I am " + name);
}
public void tellName(String name){
System.out.println("Son's name is " + name);
}
public static void main(String[] args){
Father who = new Son();
}
}
我们可以看到上面程序的打印结果:
Son says, I am null
Son's name is FATHER
Son says, I am SON
Son's name is SON
因此我们可以推断出它的执行过程:
(1)在构造子类事例时,先执行父类的构造方法,调用whoAmI()
(2)而whoAmI()被子类重写,所以调用子类的whoAmI()方法
(3)子类此时还没有被初始化,所以实例变量(非类变量)为空
(4)然后父类执行方法tellName(name),name为Father,被子类重写
(5)执行子类的的tellName(name),传入father,所以打印了Son's name is FATHER
(6)第二次被构造的时候才打印Son says, I am SON, Son's name is SON
特性二:
在javaee的框架设计中,我们为了代码的复用,往往会把最基础的CRUD方法封装在一个类中,但是当我们传入泛型到DomainDao中的时候我们需要得到泛型中的原始类,这里我们起名为DomainDao
public class DomainDao<T, PK extends Serializable> implements DatabaseDao<T, PK>{
@SuppressWarnings("unchecked")
public DomainDao(boolean queryCacheable) {
this.persistentClass = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
//this.iQP(queryCacheable);
}
}
@Override
public void deleteById(PK id) {
entityManager.remove(entityManager.getReference(persistentClass, id));
//updateCache();
}
@Override
public T find(PK id) {
return entityManager.find(persistentClass, id);
}
分享到:
相关推荐
Java反射和泛型是Java编程中的两个重要特性,它们各自为开发者提供了强大的功能,并且在特定情况下可以相互结合使用。本文将深入探讨这两个概念,并通过一个具体的`Testrefl.java`示例来阐述它们的应用。 Java反射...
Java反射与泛型是Java编程中的两个重要特性,它们各自为开发者提供了强大的工具来增强代码的灵活性和类型安全性。在本教程中,我们将深入探讨这两个主题,帮助你更好地理解和运用它们。 **Java反射** Java反射机制...
泛型是Java 5引入的新特性,增强了类型安全性和代码可读性。泛型允许我们在类、接口和方法中定义参数化类型,确保数据类型的正确性。以下是一些泛型的关键点: 1. **类型参数**:定义泛型类或接口时,使用尖括号`...
在Java编程语言中,泛型和反射是两个非常重要的特性,它们在软件开发中有着广泛的应用。本篇文章将深入探讨这两个概念以及它们在实际开发中的小运用。 首先,我们来看泛型(Generics)。泛型是在Java SE 5.0引入的...
泛型和反射是Java编程语言中的两个重要特性,它们各自有着独特的功能,但在某些场景下也可以结合使用。本文将深入探讨这两个概念以及相关的使用方法。 首先,我们来了解泛型。泛型是Java 5引入的一项特性,它允许在...
Java泛型是Java SE 5.0引入的一个重要特性,它允许在定义类、接口以及方法时使用类型参数,从而增强了代码的复用性、安全性和可读性。在数据库应用中,泛型的运用可以使得数据库操作更加灵活且类型安全。 在上述...
泛型与多态相结合,可以创建更加灵活且类型安全的代码。例如,`List<? extends Animal>`的实例可以接收任何`Animal`子类的对象。 9. 泛型接口: 接口也可以声明类型参数,例如`interface MyInterface<T> { ... }`...
根据给定的信息,“JAVA程序设计与问题”这一标题与描述,以及“JAVA”这个标签,我们可以推断出这部分内容主要围绕Java编程语言的基础知识、高级特性及其在解决实际问题中的应用进行讨论。虽然提供的具体内容部分并...
《Thinking in Java》是 Bruce Eckel 编著的一本经典的Java编程教材,它深入浅出地阐述了Java语言的核心概念...同时,翁凯教授的讲解无疑为这个过程提供了宝贵的指导,使得理论与实践相结合,更利于知识的吸收和运用。
Java SE5.0,也被称为Java 5.0,是一个重要的版本升级,引入了许多新特性,如泛型、枚举、可变参数、增强的for循环(foreach)等,这些都极大地提高了代码的可读性和可维护性。 首先,让我们深入了解Java语言基础。...
以上这些特性都是Java 8在类库方面的重要更新,它们为开发者提供了更强大、更易用的工具,提升了Java编程的效率和灵活性。通过深入理解和熟练运用这些特性,可以编写出更加高效、简洁的Java代码。
7. **泛型与反射**:虽然Java的泛型在编译后会被擦除,但反射仍然可以获取到泛型的信息,例如`getGenericSuperclass()`和`getGenericInterfaces()`可以获取到父类和接口的泛型类型。 8. **注解处理**:反射也可以...
10. **泛型**:泛型是Java SE 5.0引入的新特性,用于在编译时检查类型安全,并且所有的强制转换都是自动和隐式的,提高了代码的重用率。 11. **IO流**:Java的输入输出流系统提供了读写文件、网络通信等功能,包括...
7. 构造器:构造器用于创建对象,通常与类名相同且无返回值。 8. 继承:一个类可以继承另一个类的特性,形成类的层次结构,增强代码复用性。 9. 多态:多态允许不同类的对象对同一消息做出响应,增强了程序的灵活...
实例可能包含了如何创建类、定义属性和方法、构造函数的使用以及对象的创建与销毁等知识点。 3. **封装、继承与多态**:这是面向对象的三大特性。封装使得数据和操作数据的方法结合在一起,保护数据安全;继承允许...
通过以上各章的学习,你将能够熟练地运用Java语言进行程序设计,从简单的控制流程到复杂的面向对象编程,具备开发实际项目的能力。在实践中,可以逐个单元深入研究,结合代码示例反复练习,以巩固理论知识并提升编程...
以上只是Java面向对象编程的一部分核心概念,实际的学习过程中还需要结合具体的编程实践,如设计模式、JVM原理、并发编程等,才能真正掌握并运用这些知识。《耿祥义 Java面向对象程序设计》一书应该会深入浅出地讲解...
9. **泛型**:泛型是Java 5引入的特性,用于在编译时提供类型安全,减少强制类型转换。了解其语法和用途,能写出更健壮的代码。 10. **JavaFX和Swing**:对于GUI编程,Java提供了JavaFX和Swing两个库。理解它们的...