Java通用数据类型

用户名

Base类将通过Data类型接收未知的数据结构。为了打印数据类型对象的内容,派生类需要重写printObj方法。对于此示例,数据类型对象包含一个字符串字段。如何重写printObj()以打印String消息变量的内容?

// generic class
public abstract class Base <T>{
    T obj;
    public Base(T t){
        obj = t;
    }
    public T getObject(){
        return obj;
    }
    public void setObject(T t){
        obj = t;
    }
    public abstract void printObj();
}
// specific class
public class Derived<T> extends Base<T>{
    public Derived(T t) {
        super(t);
    }
    @Override
    public void printObj() {
        //?????
    }
}
// data can be changed
public class Data {
    String message;
    public Data(String msg){
    message = msg;
    }
}
// application class
public class App {
    public static void main(String[] args) {
        Data d = new Data("Hello");
        Derived<Data> dClass = new Derived<Data>(d);
        dClass.printObj();
    }
} 
布拉吉

策略设计模式

计算机编程中策略模式(也称为策略模式)是一种软件设计模式,可以在运行时选择算法的行为。

策略模式

  • 定义了一系列算法,
  • 封装每种算法,并
  • 使算法在该系列中可以互换。

为什么要使用模式?

  • 他们已经被证明。模式反映了在自己的工作中成功使用这些模式的开发人员的经验,知识和见解。
  • 它们是可重用的。模式提供了一种现成的解决方案,可以根据需要适应不同的问题。
  • 他们富有表现力。模式提供了解决方案的通用词汇表,可以简洁地表达大型解决方案。

您可以通过使用将可打印功能/算法分开的简单方法interface轻松地使用上述设计模式解决此问题任何这种类型的对象都将称为可打印对象

interface Printable{public void print();}

现在应该是这样T extends Printable,意味着任何类型的对象Printable

abstract class Base<T extends Printable> implements Printable{...}

现在T extends Printable,您可以将其向下转换Printable并可以print()在其上调用方法,该方法将调用传递的可打印对象的方法。

class Derived<T extends Printable> extends Base<T> {
    ...
    @Override
    public void print() {
        ((Printable)getObject()).print();
    }
}

Data通过简单地实现Printable接口,是一个可打印的对象

class Data implements Printable {
    String message;
    ...
    @Override
    public void print() {
        System.out.println(message);
    }
}

让我们再创建一个类来了解使用这种设计模式的好处,这是使用不可能的T extends Data

class NonData implements Printable {
    String message;
    ...
    @Override
    public void print() {
        System.out.println(message);
    }
}

主班:

Data d = new Data("Hello");
Derived<Data> dClass = new Derived<Data>(d);
dClass.printObj(); // output Hello


NonData d1 = new NonData("Bye");
Derived<NonData> dClass1 = new Derived<NonData>(d1);
dClass1.printObj(); // output Bye

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Java中传递通配符通用数据类型的通用

来自分类Dev

递归数据类型Java通用类型警告

来自分类Dev

通用数据类型ID

来自分类Dev

C ++通用数据类型

来自分类Dev

Java数据类型

来自分类Dev

Kotlin:HashMap中的通用数据类型?

来自分类Dev

在Java / JavaFX中实现可包含多种数据类型的通用列表

来自分类Dev

在Java / JavaFX中实现可包含多种数据类型的通用列表

来自分类Dev

任何收集类型的列表,也具有通用数据类型

来自分类Dev

类型为内部类的通用数据类型数组创建

来自分类Dev

Java数据类型问题

来自分类Dev

了解Java数据类型

来自分类Dev

构造智能指针数据类型和普通数据类型的通用方法

来自分类Dev

将通用参数转换为原始数据类型

来自分类Dev

Liquibase-可用的通用数据类型列表

来自分类Dev

数据类型通用编程和神秘的gdmXXX

来自分类Dev

具有通用数据类型的OpenCL内核

来自分类Dev

在Haskell中以通用方式扩展复杂数据类型

来自分类Dev

创建具有通用数据类型的列?

来自分类Dev

Oracle中的通用数据类型可重用

来自分类Dev

通用集合与特定数据类型的数组之间的区别

来自分类Dev

帮助我使用通用数据类型

来自分类Dev

将通用参数转换为原始数据类型

来自分类Dev

在C#中构造通用数据类型

来自分类Dev

尝试使用C ++类创建通用数据类型的问题

来自分类Dev

在 Swift 中将通用数据类型的变量转换为 String

来自分类Dev

Java-通用数据类型Stack <Item>的new Stack <?> [N]是否等效于new Stack [N]?

来自分类Dev

如何使用具有通用数据类型的printf / formatter在Java和POI的控制台中创建表

来自分类Dev

PostgreSQL到Java数据类型(Grails)

Related 相关文章

热门标签

归档