pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

我可以在 Java 源文件中有宏嗎

Can I have macros in Java source files(我可以在 Java 源文件中有宏嗎)
本文介紹了我可以在 Java 源文件中有宏嗎的處理方法,對(duì)大家解決問題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!

問題描述

限時(shí)送ChatGPT賬號(hào)..

在我的程序中,我多次從控制臺(tái)讀取整數(shù).每次,我都需要輸入這一行.

In my program I'm reading integers form console many times. Every time, I need to type this line.

new Scanner(System.in).nextInt(); 

我習(xí)慣了 C/C++,我想知道我是否可以定義類似的東西

I'm used to C/C++ and I'm wondering if I can define something like

#define READINT Scanner(System.in).nextInt(); 

然后,在我的 java 程序的每個(gè)地方,我都可以將表單控制臺(tái)讀取為

and then, in every place in my java program I can read form console as

int a = new READINT;

但是我閱讀了表格書籍 Java 不支持宏.

But I read form books Java does not support macros.

請(qǐng)有人解釋一下為什么會(huì)這樣,我可以用其他方式嗎?

Someone please explain me why is it so, and can I do this in any other way.

推薦答案

可以但你不應(yīng)該.

不應(yīng)該因?yàn)橐赃@種方式使用預(yù)處理器 被認(rèn)為是不好的做法,并且有更好、更符合 Java 習(xí)慣的方法來解決這個(gè)用例.

You shouldn't because using the pre-processor in that way is considered bad practice to start with, and there are better and more Java-idiomatic ways to solve this use case.


Java 本身不支持宏.另一方面,您可以通過 C 預(yù)處理器 管道源代碼a>(簡(jiǎn)稱CPP)就像C/C++編譯鏈一樣.

Java itself doesn't support macros. On the other hand, you could pipe the source code through the C pre processor (CPP for short) just like the C/C++ compile chain does.

這是一個(gè)演示:

src/Test.java:

#define READINT (new java.util.Scanner(System.in).nextInt())

class Test {
    public static void main(String[] args) {
        int i = READINT;
    }
}

cpp 命令:

cpp command:

$ cpp -P src/Test.java preprocessed/Test.java

結(jié)果:

class Test {
    public static void main(String[] args) {
        int i = (new java.util.Scanner(System.in).nextInt());
    }
}

編譯:

$ javac preprocessed/Test.java


您可以使用靜態(tài)方法編寫自己的實(shí)用程序類:

You can write your own utility class with a static method instead:

import java.util.Scanner;
class StdinUtil {
    public final static Scanner STDIN = new Scanner(System.in);
    public static int readInt() {
        return STDIN.nextInt();
    }
}

而當(dāng)你想使用它的時(shí)候,你可以靜態(tài)導(dǎo)入readInt方法:

And when you want to use it, you can statically import the readInt method:

import static StdinUtil.readInt; 

class Test {
    public static void main(String[] args) {
        int i = readInt();
    }
}

(或執(zhí)行 static import StdinUtil.STDIN; 并使用 STDIN.nextInt().)

(or do static import StdinUtil.STDIN; and use STDIN.nextInt().)


我自己曾經(jīng)對(duì) Java 代碼使用過 CPP 預(yù)處理方法!我正在為一門課程創(chuàng)建一個(gè)編程作業(yè).我希望能夠輕松地從參考解決方案中提取代碼骨架.所以我只是使用了幾個(gè) #ifdef 來過濾掉解決方案的秘密"部分.這樣我就可以維護(hù)參考解決方案,并輕松地重新生成代碼骨架.

I myself used the CPP preprocessing approach on Java code once! I was creating a programming assignment for a course. I wanted to be able to easily extract a code skeleton out of the reference solution. So I just used a few #ifdefs to filter out the "secret" parts of the solution. That way I could maintain the reference solution, and easily regenerate the code skeleton.

這篇文章已被重寫為一篇文章這里.

This post has been rewritten as an article here.

(*) 因?yàn)槲矣憛捰媚悴粦?yīng)該"來回答問題.此外,一些未來的讀者可能有充分的理由希望將 cpp 與 Java 源代碼結(jié)合使用!

(*) Since I hate answering questions with "you shouldn't". Besides, some future reader may have good reasons for wanting to use the cpp in conjunction with Java sources!

這篇關(guān)于我可以在 Java 源文件中有宏嗎的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,也希望大家多多支持html5模板網(wǎng)!

【網(wǎng)站聲明】本站部分內(nèi)容來源于互聯(lián)網(wǎng),旨在幫助大家更快的解決問題,如果有圖片或者內(nèi)容侵犯了您的權(quán)益,請(qǐng)聯(lián)系我們刪除處理,感謝您的支持!

相關(guān)文檔推薦

Parsing an ISO 8601 string local date-time as if in UTC(解析 ISO 8601 字符串本地日期時(shí)間,就像在 UTC 中一樣)
How to convert Gregorian string to Gregorian Calendar?(如何將公歷字符串轉(zhuǎn)換為公歷?)
Java: What/where are the maximum and minimum values of a GregorianCalendar?(Java:GregorianCalendar 的最大值和最小值是什么/在哪里?)
Calendar to Date conversion for dates before 15 Oct 1582. Gregorian to Julian calendar switch(1582 年 10 月 15 日之前日期的日歷到日期轉(zhuǎn)換.公歷到儒略歷切換)
java Calendar setFirstDayOfWeek not working(java日歷setFirstDayOfWeek不起作用)
Java: getting current Day of the Week value(Java:獲取當(dāng)前星期幾的值)
主站蜘蛛池模板: 我车网|我关心的汽车资讯_汽车图片_汽车生活! | 卡诺亚轻高定官网_卧室系统_整家定制_定制家居_高端定制_全屋定制加盟_定制家具加盟_定制衣柜加盟 | 高柔性拖链电缆_卷筒电缆_耐磨耐折聚氨酯电缆-玖泰特种电缆 | 铁素体测量仪/检测仪/铁素体含量测试仪-苏州圣光仪器有限公司 | 橡胶接头_橡胶软接头_套管伸缩器_管道伸缩器厂家-巩义市远大供水材料有限公司 | 网站优化公司_SEO优化_北京关键词百度快速排名-智恒博网络 | 导电银胶_LED封装导电银胶_半导体封装导电胶厂家-上海腾烁 | 集装箱展厅-住人集装箱住宿|建筑|房屋|集装箱售楼处-山东锐嘉科技工程有限公司 | 金蝶帐无忧|云代账软件|智能财税软件|会计代账公司专用软件 | 振动筛,震动筛,圆形振动筛,振动筛价格,振动筛厂家-新乡巨宝机电 蒸汽热收缩机_蒸汽发生器_塑封机_包膜机_封切收缩机_热收缩包装机_真空机_全自动打包机_捆扎机_封箱机-东莞市中堡智能科技有限公司 | 不锈钢轴流风机,不锈钢电机-许昌光维防爆电机有限公司(原许昌光维特种电机技术有限公司) | Safety light curtain|Belt Sway Switches|Pull Rope Switch|ultrasonic flaw detector-Shandong Zhuoxin Machinery Co., Ltd | 【铜排折弯机,钢丝折弯成型机,汽车发泡钢丝折弯机,线材折弯机厂家,线材成型机,铁线折弯机】贝朗折弯机厂家_东莞市贝朗自动化设备有限公司 | 洁净化验室净化工程_成都实验室装修设计施工_四川华锐净化公司 | 加热制冷恒温循环器-加热制冷循环油浴-杭州庚雨仪器有限公司 | 石牌坊价格石牌坊雕刻制作_石雕牌坊牌楼石栏杆厂家_山东嘉祥石雕有限公司 | ET3000双钳形接地电阻测试仪_ZSR10A直流_SXJS-IV智能_SX-9000全自动油介质损耗测试仪-上海康登 | 烟气在线监测系统_烟气在线监测仪_扬尘检测仪_空气质量监测站「山东风途物联网」 | 南京PVC快速门厂家南京快速卷帘门_南京pvc快速门_世界500强企业国内供应商_南京美高门业 | 换网器_自动换网器_液压换网器--郑州海科熔体泵有限公司 | 抓斗式清污机|螺杆式|卷扬式启闭机|底轴驱动钢坝|污水处理闸门-方源水利机械 | 不锈钢轴流风机,不锈钢电机-许昌光维防爆电机有限公司(原许昌光维特种电机技术有限公司) | 深圳快餐店设计-餐饮设计公司-餐饮空间品牌全案设计-深圳市勤蜂装饰工程 | 乐泰胶水_loctite_乐泰胶_汉高乐泰授权(中国)总代理-鑫华良供应链 | 基业箱_环网柜_配电柜厂家_开关柜厂家_开关断路器-东莞基业电气设备有限公司 | 牛奶检测仪-乳成分分析仪-北京海谊| 实体店商新零售|微赢|波后|波后合作|微赢集团 | 帽子厂家_帽子工厂_帽子定做_义乌帽厂_帽厂_制帽厂_帽子厂_浙江高普制帽厂 | 钢丝绳探伤仪-钢丝绳检测仪-钢丝绳探伤设备-洛阳泰斯特探伤技术有限公司 | 微量水分测定仪_厂家_卡尔费休微量水分测定仪-淄博库仑 | 点焊机-缝焊机-闪光对焊机-电阻焊设备生产厂家-上海骏腾发智能设备有限公司 | 防爆大气采样器-防爆粉尘采样器-金属粉尘及其化合物采样器-首页|盐城银河科技有限公司 | 耐驰泵阀管件制造-耐驰泵阀科技(天津)有限公司 | 熔体泵|换网器|熔体齿轮泵|熔体计量泵厂家-郑州巴特熔体泵有限公司 | 数年网路-免费在线工具您的在线工具箱-shuyear.com | pos机办理,智能/扫码/二维码/微信支付宝pos机-北京万汇通宝商贸有限公司 | TPM咨询,精益生产管理,5S,6S现场管理培训_华谋咨询公司 | 质构仪_鱼糜弹性仪-上海腾拔仪器科技有限公司 | 云南标线|昆明划线|道路标线|交通标线-就选云南云路施工公司-云南云路科技有限公司 | GEDORE扭力螺丝刀-GORDON防静电刷-CHEMTRONICS吸锡线-上海卓君电子有限公司 | DWS物流设备_扫码称重量方一体机_快递包裹分拣机_广东高臻智能装备有限公司 |