导航:首页 > 操作系统 > android枚举

android枚举

发布时间:2022-01-21 18:03:52

Ⅰ jsonobject怎么定义枚举android

@JsonValue
public Map<String, Object> toMap() {
Map<String, Object> map = new HashMap<>();
map.put("name", getName());
map.put("code", getCode());
return map;
}

Ⅱ 为什么说android使用enum效率低,浪费方法数

现在不会了,新版本JDK做了优化,效率高了很多,而且使用也变方便了。

Ⅲ Android怎么获取一个包下的全部类名

您好,我在别的论坛也看到您的问题,很高兴为您解答:

/**
* 从包package中获取所有的Class
*
* @param pack
* @return
*/
public static Set<Class<?>> getClasses(Package pack) {

// 第一个class类的集合
Set<Class<?>> classes = new LinkedHashSet<Class<?>>();
// 是否循环迭代
boolean recursive = true;
// 获取包的名字 并进行替换
String packageName = pack.getName();
String packageDirName = packageName.replace('.', '/');
// 定义一个枚举的集合 并进行循环来处理这个目录下的things
Enumeration<URL> dirs;
try {
dirs = Thread.currentThread().getContextClassLoader().getResources(
packageDirName);
// 循环迭代下去
while (dirs.hasMoreElements()) {
// 获取下一个元素
URL url = dirs.nextElement();
// 得到协议的名称
String protocol = url.getProtocol();
// 如果是以文件的形式保存在服务器上
if ("file".equals(protocol)) {
// 获取包的物理路径
String filePath = URLDecoder.decode(url.getFile(), "UTF-8");
// 以文件的方式扫描整个包下的文件 并添加到集合中
(packageName, filePath,
recursive, classes);
} else if ("jar".equals(protocol)) {
// 如果是jar包文件
// 定义一个JarFile
JarFile jar;
try {
// 获取jar
jar = ((JarURLConnection) url.openConnection())
.getJarFile();
// 从此jar包 得到一个枚举类
Enumeration<JarEntry> entries = jar.entries();
// 同样的进行循环迭代
while (entries.hasMoreElements()) {
// 获取jar里的一个实体 可以是目录 和一些jar包里的其他文件 如META-INF等文件
JarEntry entry = entries.nextElement();
String name = entry.getName();
// 如果是以/开头的
if (name.charAt(0) == '/') {
// 获取后面的字符串
name = name.substring(1);
}
// 如果前半部分和定义的包名相同
if (name.startsWith(packageDirName)) {
int idx = name.lastIndexOf('/');
// 如果以"/"结尾 是一个包
if (idx != -1) {
// 获取包名 把"/"替换成"."
packageName = name.substring(0, idx)
.replace('/', '.');
}
// 如果可以迭代下去 并且是一个包
if ((idx != -1) || recursive) {
// 如果是一个.class文件 而且不是目录
if (name.endsWith(".class")
&& !entry.isDirectory()) {
// 去掉后面的".class" 获取真正的类名
String className = name.substring(
packageName.length() + 1, name
.length() - 6);
try {
// 添加到classes
classes.add(Class
.forName(packageName + '.'
+ className));
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
} catch (IOException e) {
e.printStackTrace();
}

return classes; }
/**
* 以文件的形式来获取包下的所有Class
*
* @param packageName
* @param packagePath
* @param recursive
* @param classes
*/
public static void (String packageName,
String packagePath, final boolean recursive, Set<Class<?>> classes) {
// 获取此包的目录 建立一个File
File dir = new File(packagePath);
// 如果不存在或者 也不是目录就直接返回
if (!dir.exists() || !dir.isDirectory()) {
return;
}
// 如果存在 就获取包下的所有文件 包括目录
File[] dirfiles = dir.listFiles(new FileFilter() {
// 自定义过滤规则 如果可以循环(包含子目录) 或则是以.class结尾的文件(编译好的java类文件)
public boolean accept(File file) {
return (recursive && file.isDirectory())
|| (file.getName().endsWith(".class"));
}
});
// 循环所有文件
for (File file : dirfiles) {
// 如果是目录 则继续扫描
if (file.isDirectory()) {
(packageName + "."
+ file.getName(), file.getAbsolutePath(), recursive,
classes);
} else {
// 如果是java类文件 去掉后面的.class 只留下类名
String className = file.getName().substring(0,
file.getName().length() - 6);
try {
// 添加到集合中去
classes.add(Class.forName(packageName + '.' + className));
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
}
}
转载,仅供参考。
如果我的回答没能帮助您,请继续追问。

Ⅳ Android 怎么自定义枚举类型的值

static final通常跟的是一个int类型的常数,所以有时候可以用int型代替枚举 在有些时候需要输出这个枚举量的名字(比如January),上面的方法输出的是int值,用类的话可以把名字一起输出 总的来说前者消耗资源比较少,后者更符合枚举的定义 枚举的确是一个类,在JDK1.4及以前,没有enum这个用法,那时候都是使用类来建立的,在《Java编程思想》中介绍了一类写法(详见第三版的章节8.1.3群组常量);JDK5以后,enum被引入,本质上就是一个类,所以可以被继承,总体思路和第三版这个写法类似,只是换了个名字(《Java编程思想》第四版第19章专门讲这个) 补充:我把早期的例子给出吧,你看一下,这就是早期的枚举的方法: public final class Month{ private String name; private Month (String nm){name=nm;} public String toString(){return name;} public static final Month JAN=new Month("January"), FEB=new Month("February"), MAR=new Month("March"), APR=new Month("April"), MAY=new Month("May"), JUN=new Month("June"), JUL=new Month("July"), AUG=new Month("August"), SEP=new Month("September"), OCT=new Month("October"), NOV=new Month("November"), DEC=new Month("December"); public static final Month month[]={ JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC }; public static final Month number(int ord){ return month[ord-1]; } //main public static void main(String args[]){ Month m=Month.JAN; System.out.println(m); m=Month.number(12); System.out.println(m); System.out.println(m==Month.DEC); System.out.println(m.equals(Month.DEC)); System.out.println(Month.month[3]); System.out.println(Month.APR); } }

Ⅳ 自定义控件属性里面有枚举类型,通过typedarray怎么获取啊

DWORD WINAPI FunProc1(LPVOID lpParameter);
DWORD WINAPI FunProc2(LPVOID lpParameter);
int ticket=100;
HANDLE g_hEvent; //定义事件对象
void main()

Ⅵ android 静态常量和枚举哪个好

常量是直接编译在代码中的,而枚举则是一种类,你可以通过反射根据值反查出它的枚举形式是什么。


枚举定义了值的范围,但是常量没有。所以要根据你的实际情况选择。

比如你有一个变量,是中国所有的省,那么最好用枚举,因为这些是固定不变的。在代码里使用的时候更方便,也易懂。

Ⅶ android平台 usb设备开发 动态枚举pc端的usb端口

有现成的,希望对你有所帮助

// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently, but
// are changed infrequently
//

#pragma once

#ifndef _WIN32_WINNT // Allow use of features specific to Windows XP or later.
#define _WIN32_WINNT 0x0501 // Change this to the appropriate value to target other versions of Windows.
#endif

#include <stdio.h>
#include <tchar.h>

// TODO: reference additional headers your program requires here
// EnumDevice.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <guiddef.h>
#include <windows.h>
#include <setupapi.h>
#include <vector>
#include <iostream>

using namespace std;

//U盘 interface class GUID
GUID IID_CLASS_WCEUSBS =;

BOOL SearchDevice(vector<wstring> &vDevicePath)
{
BOOL bRes = FALSE;
LPGUID pInterfaceGuid = &IID_CLASS_WCEUSBS;

HDEVINFO hDeviceInfo = SetupDiGetClassDevs( pInterfaceGuid,
NULL,
NULL,
DIGCF_PRESENT | DIGCF_DEVICEINTERFACE);

if (INVALID_HANDLE_VALUE == hDeviceInfo)
{
goto Exit;
}

// enum device interface
SP_DEVICE_INTERFACE_DATA spDevInterData; //a structure of device interface data

memset(&spDevInterData, 0x00, sizeof(SP_DEVICE_INTERFACE_DATA));
spDevInterData.cbSize = sizeof(SP_DEVICE_INTERFACE_DATA);

DWORD dwIndex = 0;

while (TRUE)
{
if (!SetupDiEnumDeviceInterfaces( hDeviceInfo,
NULL,
pInterfaceGuid,
dwIndex,
&spDevInterData))

{
if (ERROR_NO_MORE_ITEMS == GetLastError())
{
OutputDebugStringW(L"No more interface");
}
else
{
OutputDebugStringW(L"SetupDiEnumDeviceInterfaces Error");
}

goto Exit;
}

// get length of interface detail info
DWORD dwRequiredLength = 0; //for getting length of inter face detail data

if (!( hDeviceInfo,
&spDevInterData,
NULL,
0,
&dwRequiredLength,
NULL))
{
if (ERROR_INSUFFICIENT_BUFFER != GetLastError())
{
OutputDebugStringW(L"calculate require length");
//goto Exit;
}
}

// get interface detail info
PSP_DEVICE_INTERFACE_DETAIL_DATA pSpDIDetailData; //a pointer to interface detail data

pSpDIDetailData = NULL;
pSpDIDetailData = (PSP_DEVICE_INTERFACE_DETAIL_DATA)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, dwRequiredLength);

if(NULL == pSpDIDetailData)
{
OutputDebugStringW(L"HeapAlloc Memory Failed");

if (!SetupDiDestroyDeviceInfoList(hDeviceInfo))
{
OutputDebugStringW(L"SetupDiDestroyDeviceInfoList Error");
}

goto Exit;
}

pSpDIDetailData->cbSize = sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA);

if (!( hDeviceInfo,
&spDevInterData,
pSpDIDetailData,
dwRequiredLength,
&dwRequiredLength,
NULL))
{
OutputDebugStringW(L" Error");
goto Exit;
}

wstring wcsDevicePath = pSpDIDetailData->DevicePath;

vDevicePath.push_back(wcsDevicePath);

if (NULL != pSpDIDetailData)
{
HeapFree(GetProcessHeap(), 0, pSpDIDetailData);
pSpDIDetailData = NULL;
}

dwIndex++;
}

if (!SetupDiDestroyDeviceInfoList(hDeviceInfo))
{
OutputDebugStringW(L"SetupDiDestroyDeviceInfoList Error");
}

bRes = TRUE;

Exit:
return bRes;
}

int _tmain(int argc, _TCHAR* argv[])
{

vector<wstring> vDevicePath;
SearchDevice(vDevicePath);

vector<wstring>::iterator iter;

for (iter = vDevicePath.begin(); iter != vDevicePath.end(); ++iter)
{
wcout << (*iter).c_str() << endl;
}

system("pause");
return 0;
}
// stdafx.cpp : source file that includes just the standard includes
// EnumDevice.pch will be the pre-compiled header
// stdafx.obj will contain the pre-compiled type information

#include "stdafx.h"

// TODO: reference any additional headers you need in STDAFX.H
// and not in this file

Ⅷ Android 怎么自定义枚举类型的值

在已知可能输入值情况下,我们常常会用到枚举类型。在java中,怎么自定义枚举类型的值呢?请参考如下代码:

[java] view plain
public enum Point {
Satisfaction(1), Dissatisfied(-1);
private final int val;

private Point(int value) {
val = value;
}

public int getValue() {
return this.val;
}
}

在调用的时候,可以用Point.Satisfaction 和Point.Dissatisfied,如下所示:

[java] view plain
Judge(mContenxt, mGuid, Point.Dissatisfied);

在方法Judge中,可以用getValue获取枚举的值。如下所示:
[java] view plain
public void Judge(Context context,String logGuid, Point point){
int point = point.getValue();

}

Ⅸ 用java写一个枚举类程序

packagecom.school.stereotype;
/**
*活动枚举类型
*@authorQiXuan.Chen
*/
publicenumEventStatus{
/**
*未发布。
*/
DRAFT("DRAFT","未发布"),
/**
*已发布。
*/
PUBLISHED("PUBLISHED","已发布");
/**
*活动状态的值。
*/
privateStringvalue;
/**
*活动状态的中文描述。
*/
privateStringtext;
/**
*@paramstatus活动状态的值
*@paramdesc活动状态的中文描述
*/
privateEventStatus(Stringstatus,Stringdesc){
value=status;
text=desc;
}
/**
*@return当前枚举对象的值。
*/
publicStringgetValue(){
returnvalue;
}
/**
*@return当前状态的中文描述。
*/
publicStringgetText(){
returntext;
}
/**
*根据活动状态的值获取枚举对象。
*
*@paramstatus活动状态的值
*@return枚举对象
*/
(Stringstatus){
EventStatus[]allStatus=EventStatus.values();
for(EventStatusws:allStatus){
if(ws.getValue().equalsIgnoreCase(status)){
returnws;
}
}
("status值非法,没有符合课程状态的枚举对象");
}
}

Ⅹ android intent 可以传递enum 吗

可以使用序列化对象保存enum对象,如下内容:
bundle.putSerializable(String key , Seralizable data) //向Bundle放入一个可序列化的对象,例如:enum123123

示例:
Intent intent = new Intent(MainActivity.this,OtherActivity.class);
Bundle bundle = new Bundle();
bundle.putSerializable("enum", YourEnum.TYPE1);
intent.putExtras(bundle); //将bundle传入intent中。12341234

get
bundle.getXxx(String key);//从Bundle取出Int、String等各种类型的数据
bundle.gutSerializable(String key ) //从Bundle取出一个可序列化的对象,例如:enum1212

示例:
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
YourEnum TYPE1 = (YourEnum ) bundle.get("enum");//这时使用get()取出一个Object类型的对象,可以进行强制类型转化。

阅读全文

与android枚举相关的资料

热点内容
服务器c5是什么意思 浏览:438
基础程序员证 浏览:423
如何防止服务器被偷油 浏览:287
安卓导入存储联系人怎么不见了 浏览:101
微信遮图打赏源码 浏览:171
安卓平板图片照片彻底删除了怎么办 浏览:442
怎样查看指标源码 浏览:529
猫和老鼠哪个app好玩 浏览:716
网易有爱登录器在哪个文件夹 浏览:244
iis6压缩 浏览:140
redisphp扩展mac 浏览:199
状态链路算法 浏览:316
毛豆app里面购车合同在哪里 浏览:563
程序员上臂式电脑 浏览:56
php检测中文 浏览:101
压缩性骨折半年 浏览:561
如何云服务器解压文件 浏览:932
单片机93加9E的psw 浏览:723
福建少儿频道哪个app可以看 浏览:393
印度加密代币机票 浏览:420