1 /*
2 * Copyright The Apache Software Foundation
3 *
4 * Licensed to the Apache Software Foundation (ASF) under one
5 * or more contributor license agreements. See the NOTICE file
6 * distributed with this work for additional information
7 * regarding copyright ownership. The ASF licenses this file
8 * to you under the Apache License, Version 2.0 (the
9 * "License"); you may not use this file except in compliance
10 * with the License. You may obtain a copy of the License at
11 *
12 * http://www.apache.org/licenses/LICENSE-2.0
13 *
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
19 */
20
21 package org.apache.hadoop.hbase.util;
22
23 /**
24 * Utilities for class manipulation.
25 */
26 public class Classes {
27
28 /**
29 * Equivalent of {@link Class#forName(String)} which also returns classes for
30 * primitives like <code>boolean</code>, etc.
31 *
32 * @param className
33 * The name of the class to retrieve. Can be either a normal class or
34 * a primitive class.
35 * @return The class specified by <code>className</code>
36 * @throws ClassNotFoundException
37 * If the requested class can not be found.
38 */
39 public static Class<?> extendedForName(String className)
40 throws ClassNotFoundException {
41 Class<?> valueType;
42 if (className.equals("boolean")) {
43 valueType = boolean.class;
44 } else if (className.equals("byte")) {
45 valueType = byte.class;
46 } else if (className.equals("short")) {
47 valueType = short.class;
48 } else if (className.equals("int")) {
49 valueType = int.class;
50 } else if (className.equals("long")) {
51 valueType = long.class;
52 } else if (className.equals("float")) {
53 valueType = float.class;
54 } else if (className.equals("double")) {
55 valueType = double.class;
56 } else if (className.equals("char")) {
57 valueType = char.class;
58 } else {
59 valueType = Class.forName(className);
60 }
61 return valueType;
62 }
63
64 public static String stringify(Class[] classes) {
65 StringBuilder buf = new StringBuilder();
66 if (classes != null) {
67 for (Class c : classes) {
68 if (buf.length() > 0) {
69 buf.append(",");
70 }
71 buf.append(c.getName());
72 }
73 } else {
74 buf.append("NULL");
75 }
76 return buf.toString();
77 }
78 }