首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用Java根据条件返回不同类型的对象

可以通过使用多态和工厂模式来实现。以下是一个示例代码:

代码语言:txt
复制
// 定义一个父类
abstract class Animal {
    public abstract void sound();
}

// 定义子类
class Dog extends Animal {
    @Override
    public void sound() {
        System.out.println("汪汪汪");
    }
}

class Cat extends Animal {
    @Override
    public void sound() {
        System.out.println("喵喵喵");
    }
}

// 定义工厂类
class AnimalFactory {
    public static Animal createAnimal(String type) {
        if (type.equalsIgnoreCase("dog")) {
            return new Dog();
        } else if (type.equalsIgnoreCase("cat")) {
            return new Cat();
        }
        return null;
    }
}

// 使用工厂类创建对象
public class Main {
    public static void main(String[] args) {
        Animal animal1 = AnimalFactory.createAnimal("dog");
        animal1.sound();  // 输出:汪汪汪

        Animal animal2 = AnimalFactory.createAnimal("cat");
        animal2.sound();  // 输出:喵喵喵
    }
}

在上面的示例中,我们定义了一个抽象的Animal类作为父类,然后定义了Dog和Cat两个子类,它们分别重写了父类的sound()方法。接下来,我们定义了一个AnimalFactory工厂类,通过传入不同的类型参数,工厂类可以返回不同类型的Animal对象。

在主函数中,我们使用AnimalFactory.createAnimal()方法创建了一个Dog对象和一个Cat对象,并调用它们的sound()方法进行输出。

这种方式可以根据条件动态地返回不同类型的对象,具有灵活性和可扩展性。在实际应用中,可以根据具体的业务需求进行扩展,返回更多不同类型的对象。

腾讯云相关产品推荐:腾讯云函数(Serverless云函数计算服务),它提供了无服务器的计算能力,可以根据具体的业务需求动态创建和管理函数,实现按需计算,节省成本。详情请参考腾讯云函数官方文档:腾讯云函数

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

根据不同条件使用不同实现类业务代码设计

场景 此时有一个场景,需要设计一个根据不同状态和条件采用不同业务处理方式。 这样大家可能不是太理解。...在程序中,仍需要根据不同条件做if else判断PayWay,增加支付方式还是得修改原有的判断逻辑。...先思考一下这个if else作用是什么? 答:根据思路①描述,这个if else是用来确定采用哪种支付方式。...我们可以将这块代码抽离出来,让对应业务实现类实现自己逻辑实现,然后根据返回值true 或者false决定是否过滤掉这个业务实现类。...就连之前设计枚举都可以不用,可扩展性大大提升。如需使用,只需修改对应入参和对应名称即可。

2.2K40

Java中为什么不同返回类型不算方法重载?

本文已收录《Java常见面试题》:https://gitee.com/mydb/interview 方法重载是指在同一个类中,定义了多个同名方法,但每个方法参数类型或者是参数个数不同就是方法重载...从方法签名组成规则我们可以看出,方法返回类型不是方法签名组成部分,所以当同一个类中出现了多个方法名和参数相同,但返回类型不同方法时,JVM 就没办法通过方法签名来判断到底要调用哪个方法了,如下图所示...方法重载使用场景 方法重载经典使用场景是 String 类型 valueOf 方法,valueOf 方法重载有 9 种实现,如下图所示: 它可以将数组、对象和基础数据类型转换成字符串类型...总结 在同一个类中定义了多个同名方法,但每个方法参数类型或者是参数个数不同就是方法重载。方法重载典型使用场景是 String 中 valueOf 方法,它有 9 种实现。...方法返回类型不能作为方法重载依据,因为它不是方法签名组成部分。

3.3K10

Golang 函数返回类型是接口时返回对象指针还是值

1.接口简介 Interface 是一组抽象方法(未具体实现方法,仅包含方法名参数返回方法)集合,如果实现了 interface 中所有方法,即该类型就实现了该接口。...接口声明格式: type InterfaceName interface { //方法列表 } 2.函数返回类型是接口时返回对象指针还是值 函数返回类型是接口时返回对象指针还是值,这个要看具体需要...期望原对象在后续操作中被修改则返回对象指针。返回对象值则返回对象副本,对对象副本修改不会影响原对象返回对象指针示例。...createEmployeeObj() o.Set() o.Print() e.Print() } 输出结果: company=alibaba company=alibaba 可见函数返回类型是接口时返回对象指针...返回对象值示例。

7.9K30

不同图表类型使用场景

其实不同图表在表达数据方面确实是有讲究,有些适合做对比;有些适合用来表现趋势。那么我们应该怎么选择呢? ▌在知乎还有新浪微博上,有很多Excel高手都分享过图表适用心得。...不过总结较为完善还是刘万祥老师《Excel图表之道》中所用思路。...▌商务场合需要用图表反映数据场景五花八门,但是按照数据关系/模式分类可以分为以下几种状况,每种关系都有相对应合适图表类型,如下图所示: ?...▌国外图表专家Andrew Abela 曾总结了一份图表类型选择指南,将图表需要展示关系分为以下几类: 比较 分布 构成 联系 以下是根据思路整理图表选择指南: ?...得到数据后,只要按照以上原则使用相对应图表就可以避免选择失误了!

2K60

Thrift不同服务类型使用探索

本篇博文编写目的是对Thrfit不同服务类型进行整理,并结合代码示例进行说明。 一、目标 本篇博文编写目的是对Thrfit不同服务类型进行整理,并结合代码示例进行说明。...对不同服务类型进行介绍说明,并给出示例 3. 异步客户端调用实例 4....Nifty库使用,包含服务端和客户端代码示例 二、实例 2.1 说明 在这个示例中,我们主要在用户接口中定义三个接口:保存用户,根据name获取用户列表以及删除用户 如: /** * 保存用户...接下来,就能够创建Thrift服务~ 三、Thrift不同服务端类型 3.1 服务端类型 ? 查看ThriftTServer层次结构,我们可以看出,Thrift服务端类型有如下几种。...服务端类型描述如下: TSimpleServer —— 单线程服务器端使用标准阻塞式 I/O /** * Simple singlethreaded server for testing.

3.6K20

Java中方法重载是否能够依靠返回类型不同来区分?

Java编程语言中,方法重载是指在一个类中定义多个相同名称但参数列表不同方法。通过方法重载,我们可以为同一动作提供多种实现方式。那么在Java中,方法重载是否能够依靠返回类型不同来区分呢?...Java中,方法重载无法通过返回类型来区分重载方法。 其主要原因有两点: 1、返回类型不参与方法签名 Java语言规范中描述了方法签名概念,用于区分同一个类中重载方法。...方法签名包括方法名称和参数列表(数量、顺序、类型),而不包括返回类型。...int类型结果,另一个接收两个double类型参数并返回double类型结果。...尽管它们返回类型不同,但它们参数列表相同,因此它们不违反Java方法重载规定。 2、反例容易出错 如果我们允许通过返回类型来区分方法重载,很容易造成反例,导致程序员困惑和错误。

28420

bat批处理命令根据不同操作系统设置不同电源使用方案

直接下发策略远程关机是可以,但怕有误伤;准备推送策略让电脑休眠,毕竟能省一点是一点吗,接着发现这得每天推送一次脚本,并且遇到加班同事策略就显得呆板了,无法在错过执行时间后继续运行;又考虑了下,想办法更改终端电源方案...,控制显示器关机和睡眠时间,这样只要符合策略系统自己就执行了;继续完善,xp和win7系统更改电源方案命令还不一样;最后决定通过360天擎平台推送批处理脚本,然后脚本根据操作系统执行对应命令,这样终端电源方案被改了...40分钟无人使用进入睡眠状态 3、使用powercfg命令更改xp系统电源方案 目的:主要调整电源方案家用/办公桌计划关闭显示器时间和使计算机进入休眠状态时间。...5、使用批处理文件设置不同系统使用不同命令 @echo off ver|find "5.1" if errorlevel 1 goto win7 if errorlevel 0 goto xp :...6、使用360天擎或者盈高准入推送批处理文件 只要将bat批处理文件推送到对应终端然后执行,这样终端电源计划就被修改了,只要满足条件就会触发。

2.1K10

Java 日期类型比较没有返回正确结果

最近在数据库处理时候发现日期对比时候没有返回正确结果。 但是保存时间实际上是相同。 代码如下: if (!...mlsPhoto.getDateUpdate().equals(photo.getDateUpdate())) { } 因为这里使用了 equals 方法。...问题解决 经过 Debug 后,这 2 个日期纳秒数是不同,查看下对象如下。 我们会发现其中一个对象有纳秒,一个对象没有。 但是 fastTime 是相同。...如果使用 equals 那么这个方法比较是毫秒,所以是不相等。 因为多了一个 0。 如上图显示毫秒比较,因此这里不能使用这个比较方法。...dbDateTime.isEqual(mlsDateTime)) { } 说白了这个问题就是精度问题。 https://www.ossez.com/t/java/13833

3.4K00

Java入门(9.3)-- 对象类型转换

9.3.1 向上转型 子类对象转为父类对象,称为向上转型,即把子类对象赋值给父类类型变量。...常规继承图都是将顶级类设置在页面的顶部,然后逐渐向下,所以将子类对象看作是父类对象被称为向上转型。由于向上转型是从一个较具体类到较抽象转换,所以它总是安全。...在做向下转型操作时,将特性范围小对象转换为特性范围大对象肯定会出现问题,所以程序中使用向下转型技术时,必须使用显示类型转换(将父类对象强制转换为某一个子类对象),向编译器指明要将父类对象转换为哪一种类型子类对象...9.3.3 使用instanceof操作符判断对象类型 当在程序中执行向下转型操作时,如果父类对象不是子类对象实例,就会发生ClassCastException异常,所以在执行向下转型之前需要判断父类对象是否为子类对象实例...语法: boolean result = child instanceof parents 注:instanceof是Java语言关键字,在Java语言中关键字都是小写。

81040

Java List 中存不同数据类型

在最近实践中,有人突然问了一个问题:在 Java List 中可以存不同数据类型吗?...解答List 中是可以存不同数据类型。但是在定义时候需要定义成: List testList = new ArrayList();,不能为要使用 List 指定数据类型。...当为我们使用 List 不指定数据类型的话,所有存到 List 中对象都会被转换为 Object 类型。而当我门再从list 中取出该数据时,就会发现数据类型已经改变。...Objec t类是所有Java祖先。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类方法。在不明确给出超类情况下,Java会自动把Object作为要定义类超类。...如在使用时候进行数据类型转换,就比较容易出现类型转换方面的错误了,所以我们会先定义好。https://www.isharkfly.com/t/java-list/15040

51770
领券