導航:首頁 > 操作系統 > 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枚舉相關的資料

熱點內容
工作三年的大專程序員 瀏覽:728
java畢業設計文獻 瀏覽:143
籌碼集中度指標源碼 瀏覽:482
listsortjava 瀏覽:186
plc閃光電路編程實例 瀏覽:299
socket編程試題 瀏覽:206
華為的伺服器怎麼設置從光碟機啟動 瀏覽:871
程序員真的累嗎 瀏覽:328
學信網app為什麼刷臉不了 瀏覽:874
天蠍vs程序員 瀏覽:996
單片機下載口叫什麼 瀏覽:190
程序員的道 瀏覽:926
雲伺服器不實名違法嗎 瀏覽:558
怎樣查看文件夾圖片是否重復 瀏覽:995
文件怎麼導成pdf文件 瀏覽:808
打開sql表的命令 瀏覽:103
安卓手機如何面部支付 瀏覽:38
天元數學app為什麼登錄不上去 瀏覽:825
明日之後為什麼有些伺服器是四個字 瀏覽:104
安卓系統l1是什麼意思 瀏覽:26